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

时间:2013-05-20 11:31:06

标签: 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循环中的最后一行:

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

一切都好。

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

4 个答案:

答案 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]));

这对你有用。