-1

以下代码显示错误:未定义索引:$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

4 回答 4

1

在行中

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

我认为'string'不允许变量插值。换句话说, PHP 不会解释$col_name为变量。尝试

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

注意''是现在""。使用""将在字符串中插入变量

编辑:

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

例如

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

会输出

1234
$var

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

于 2013-05-20T11:34:22.947 回答
1

您不需要用引号括起'您的变量$col_name,只需更改为

$db_value = trim(htmlspecialchars_decode($row[$col_name]));
于 2013-05-20T11:34:30.103 回答
0

基本上,您需要删除 ' 因为在使用 PHP 变量时不需要它。

将行更改为:

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

这对你有用。

于 2013-05-20T12:17:08.063 回答
0

使用double quotes,

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

或者在这里你可以简单地避免引号,

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

阅读字符串以获取有关引号的更多信息。

于 2013-05-20T11:34:18.263 回答