使用WHERE子句时出现mysql_fetch_array错误

时间:2011-09-21 08:19:18

标签: php mysql arrays

我正在使用:

$query = "SELECT * FROM mydb WHERE condition = New ORDER BY id ASC";

但是我收到了这个错误:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/mydb.php on line 84

但是,如果我删除where子句它完美地工作,有人能指出我正确的方向吗?

在执行获取数组时,Where子句是否不可用? 谢谢你的帮助。

编辑:我收到的错误消息:

  

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'condition ='附近使用正确的语法'新'ORDER BY id ASC'

7 个答案:

答案 0 :(得分:1)

始终以这种方式运行所有查询(至少在你为此采用一些智能库之前)

$query  = "SELECT * FROM mydb WHERE condition = New ORDER BY id ASC";
$result = mysql_query($query) or trigger_error(mysql_error()." in ".$query);

仅仅因为世界上没有一个人可以判断你的查询有什么问题,而是数据库本身。所以,你必须问它是否有任何问题。不是stackoverflow社区(他们完全不知道),而是你的数据库服务器。这才是重点。

请注意,您必须能够在屏幕上或错误日志中观察发生的错误。

收到有关语法错误的错误消息后,您必须检查显示的查询的语法。如果没有可见错误,请参阅http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html以防查询中未保留保留字。 condition似乎是。所以

$query  = "SELECT * FROM mydb WHERE `condition` = New ORDER BY id ASC";

将是解决方案

答案 1 :(得分:0)

您似乎缺少“新”一词的引号。

$query = "SELECT * FROM mydb WHERE condition = 'New' ORDER BY id ASC";

另外,您是否将$query传递给mysql_fetch_array,或者您是否在提问时未提及mysql_query来电?

答案 2 :(得分:0)

你必须引用字符串。

$query = "SELECT * FROM mydb WHERE `condition` = 'New' ORDER BY id ASC";

修改

条件是保留字。

答案 3 :(得分:0)

由于您已尝试将单引号添加到('新'),

  1. 请确保条件是您要查询的表格中的列

  2. mydb是数据库中的一个表(而不是您的数据库名称)!

答案 4 :(得分:-1)

您的一个列还是一个值? 试试这个:

$query = "SELECT * FROM mydb WHERE condition = 'New' ORDER BY id ASC";

答案 5 :(得分:-1)

$query = "SELECT * FROM mydb WHERE condition = 'New' ORDER BY id ASC";
$result = mysql_query( $query );
while( $row = mysql_fetch_array( $result ) {
    // use $row
}

答案 6 :(得分:-1)

永远不要假设查询会起作用 - 在处理任何结果之前预期错误并检查它们。

$query = 'SELECT * FROM `mydb` WHERE `condition` = "New" ORDER BY `id` ASC';
$result = mysql_query( $query );

if( !$result ){
  // Query Failed. You can access the error details with mysql_error()
}elseif( mysql_num_rows( $result )==0 ){
  // Query Returned No Results
}else{
  while( $r = mysql_fetch_assoc( $result ) ){
    // Do whatever you want with the row, which is $r
  }
}