PHP变量在MySQLi语句中不起作用

时间:2015-01-16 17:47:23

标签: php mysql mysqli

我有以下代码:

$indtag = '';
foreach($pretag as &$indtag) { //cycles through tags, puts quotes into check by tag
    $quote = mysqli_query($mysqli, "SELECT `id`, `$indtag` FROM `beyonce` WHERE `$indtag` LIKE '%$indtag%'");
        while($row = mysqli_fetch_assoc($quote)) {
            echo $row['$indtag'];
            echo $row['id'];
        }
}

该表包含id s,quote s的字段,然后是每个标记的单个列(愤怒为ang为例)。 pretag是一个充满标记的数组(rom是浪漫,ang是愤怒,dece是欺骗)我正在浏览,试图找到带有这些ID的引号和标签。当我使用ang运行它时,该语句在SQL中工作正常,它选择ID很好,但是当我尝试使用变量选择标记的列/字段时,没有任何内容返回。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您正在使用变量$indtag,您应该使用列名indtag

SELECT `id`, `$indtag` FROM `beyonce` WHERE `$indtag` LIKE '%$indtag%'
              ^                              ^

正如@tadman指出的那样,不要这样做,使用mysqli_stmt_bind_param准备好的陈述,或者你是疯狂的。

答案 1 :(得分:0)

您的代码中的这一行不需要引号。

echo $row['$indtag'];  // Won't work
echo $row[$indtag];    // Will work