2013-05-20 3 views
-1

Le code suivant indique l'erreur: Undefined index: col_name $ en ...variable php comme nom de colonne variable mysql_fetch_assoc

$table="my_table"; 
$col_name="my_col"; 

$sql="SELECT * FROM $table"; 

$result=mysql_query($sql); 

while($row=mysql_fetch_assoc($result)){ 

$db_value = trim(htmlspecialchars_decode($row['$col_name'])); 

} 

Mais si je remplace la dernière ligne dans la boucle while avec le suivant:

$db_value = trim(htmlspecialchars_decode($row['my_col'])); 

tout va bien.

Comment puis-je utiliser une variable php comme nom de colonne au lieu d'utiliser le nom de colonne directement?

+0

Pourquoi avez-vous vraiment besoin de ça? 'my_table' a une colonne' my_col' - n'est-ce pas suffisant? –

+0

Qu'en est-il de '$ row [$ col_name]'? – Trinimon

Répondre

0

Utilisez double quotes,

$db_value = trim(htmlspecialchars_decode($row["$col_name"])); 

Ou ici, vous pouvez simplement éviter les citations,

$db_value = trim(htmlspecialchars_decode($row[$col_name])); 

Lire Strings pour plus sur guillemets.

1

dans la ligne

$db_value = trim(htmlspecialchars_decode($row['$col_name'])); 

Je pense que le 'string' ne permet pas d'interpolation variable. En d'autres termes, PHP n'interprétera pas $col_name en tant que variable. Essayez

$db_value = trim(htmlspecialchars_decode($row["$col_name"])); 

Notez le '' est maintenant "". L'utilisation "" interpole des variables dans la chaîne

EDIT:

« interpolation de chaîne » est l'endroit où PHP analyse la chaîne, recherche des variables et remplace la variable par sa représentation de chaîne. N'arrive que lorsque vous utilisez des guillemets doubles.

E.g.

$var = 1234; 
printf("$var\n"); 
printf('$var\n'); 

génèrerait

1234 
$var 

La première ligne en raison de l'interpolation de chaîne. La deuxième ligne car aucune interpolation de chaîne n'est faite avec des guillemets simples.

+0

interpolation de variable? –

+0

PHP analyse la chaîne et recherche les variables et les remplace dans la chaîne avec la représentation sous forme de chaîne de leur valeur :) Edited post. – Jimbo

1

Vous n'avez pas besoin d'entourer de guillemets ' votre $col_name variable changez simplement à ce

$db_value = trim(htmlspecialchars_decode($row[$col_name])); 
0

Fondamentalement, vous devez supprimer le «car il n'est pas nécessaire lorsque vous utilisez une variable PHP.

Modifiez la ligne:

$db_value = trim(htmlspecialchars_decode($row[$col_name])); 

Cela fonctionne pour vous.

Questions connexes