以下代码显示错误:未定义索引:$ 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变量作为列名而不是直接使用列名?
答案 0 :(得分:1)
在
行$db_value = trim(htmlspecialchars_decode($row['$col_name']));
我认为'string'
不允许变量插值。换句话说,PHP不会将$col_name
解释为变量。试试
$db_value = trim(htmlspecialchars_decode($row["$col_name"]));
注意''
现在是""
。使用""
将在字符串中插入变量
编辑:
“字符串插值”是PHP解析字符串,查找变量,并用其字符串表示替换变量的地方。只有在使用双引号时才会发生。
E.g。
$var = 1234;
printf("$var\n");
printf('$var\n');
输出
1234
$var
第一行是因为字符串插值。第二行是因为没有使用单引号进行字符串插值。
答案 1 :(得分:1)
您不需要使用引号'
包围变量$col_name
,只需更改为此
$db_value = trim(htmlspecialchars_decode($row[$col_name]));
答案 2 :(得分:0)
使用double quotes
,
$db_value = trim(htmlspecialchars_decode($row["$col_name"]));
或者在这里你可以简单地避免引用,
$db_value = trim(htmlspecialchars_decode($row[$col_name]));
阅读Strings了解有关报价的更多信息。
答案 3 :(得分:0)
基本上你需要删除'因为你在使用PHP变量时不需要它。
将行更改为:
$db_value = trim(htmlspecialchars_decode($row[$col_name]));
这对你有用。