2011-08-12 99 views
1

我的查询正在抛出此错误。任何人都能看到为什么'在''where子句'中的未知列''

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

未知列 'where子句'

+0

什么是' $ uniqueUnits [A]'? –

回答

5

两个问题。

  • 您正在使用反引号来分隔字符串。反引号划分字段,所以MySQL认为你想给它一个列名。

  • 错误消息指示实际上它认为是列名的此值为空。所以你的价值$uniqueUnits[a]可能被破坏,或者没有正确插入。


你应该做到以下几点:

  • 与 “复杂的语法”,以确保Interpolate your variables显式的字符串形式正确;

  • 检查$query值,以便你可以看到发生了什么事情:

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

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

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

3

尝试

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

反引号是转义保留的话,那么MySQL是你的翻译变量的内容到某个字段名。

0

尝试与周围的{}阵列,像这样:

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

而且,是ID列实际上是在你的餐桌?

+0

不,'echo“文本$ array [key]”'是正确的。 –

+0

http://www.php.net/manual/en/language.types.array.php搜索“以下是好的,因为它在一个字符串中” –

+0

我的歉意。感谢Tomalak。如果我对这个答案没有任何更多的活动,我会删除它。 – Bojangles