'where子句'中的未知列''

时间:2011-08-12 16:06:16

标签: mysql

我的查询丢失了这个错误。谁能明白为什么?

$query = "SELECT * FROM Units WHERE ID = `$uniqueUnits[a]`";
  

'where子句'

中的未知列''

4 个答案:

答案 0 :(得分:5)

两个问题。

  • 您正在使用反引号来分隔字符串。反引号分隔字段,因此MySQL认为你试图给它一个列名。

  • 错误消息表明,实际上,它认为是列名的值为空。因此,您的值$uniqueUnits[a]可能已被破坏,或未正确插值。


您应该执行以下操作:

  • Interpolate your variables明确地使用“复杂语法”来确保字符串正确形成;

  • 检查 $query的值,以便了解正在发生的事情:

    print $query;
    
  • 使用实际引号来分隔字符串:

    $query = "SELECT * FROM Units WHERE ID = '{$uniqueUnits[a]}'";
    //                                       ^ quote
    //                                        ^ PHP variable interpolation
    

答案 1 :(得分:3)

$query = "SELECT * FROM Units WHERE ID = '$uniqueUnits[a]'";
                                         ^---            ^---

反引号用于转义保留字,因此mysql将变量的内容转换为字段名。

答案 2 :(得分:0)

因为显然$ uniqueUnits [a]解析为空字符串。并且在数据库中没有这样的列。

答案 3 :(得分:0)

尝试使用{}围绕您的数组,如下所示:

$query = "SELECT * FROM Units WHERE ID = `{$uniqueUnits[a]}`";

另外,列ID实际上在您的表中吗?