Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php变量作为mysql_fetch_assoc变量中的列名_Php_Mysql - Fatal编程技术网

php变量作为mysql_fetch_assoc变量中的列名

php变量作为mysql_fetch_assoc变量中的列名,php,mysql,Php,Mysql,以下代码显示错误:未定义索引:$col_name in $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'])); } 但是如果我将while循环中的最后

以下代码显示错误:未定义索引:$col_name in

$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']));

}
但是如果我将while循环中的最后一行替换为以下一行:

$db_value = trim(htmlspecialchars_decode($row['my_col']));
一切都好


如何使用php变量作为列名而不是直接使用列名?

使用
双引号

$db_value = trim(htmlspecialchars_decode($row["$col_name"]));
或者在这里你可以避免引用

$db_value = trim(htmlspecialchars_decode($row[$col_name]));
阅读更多关于引号的信息。

在行中

$db_value = trim(htmlspecialchars_decode($row['$col_name']));
我认为
'string'
不允许变量插值。换句话说,PHP不会将
$colu name
解释为变量。试一试

$db_value = trim(htmlspecialchars_decode($row["$col_name"]));
注意
'
现在是
'
。使用
将在字符串中插入变量

编辑:

“字符串插值”是PHP解析字符串、查找变量并用其字符串表示替换变量的地方。仅在使用双引号时发生

例如

将输出

1234
$var

第一行是因为字符串插值。第二行,因为没有字符串插值是用单引号完成的。

您不需要用引号括起来
您的变量
$colu name
,只需更改为此

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

基本上,您需要删除“因为在使用PHP变量时不需要”

将行更改为:

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

这对你有用。

你为什么真的需要它
my_table
有一列
my_col
-这还不够吗?那
$row[$col_name]
呢?变量插值?PHP解析字符串并查找变量,并用其值的字符串表示形式替换字符串中的变量:)编辑过的帖子。
$db_value = trim(htmlspecialchars_decode($row[$col_name]));