我正在使用:
$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'
答案 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)
由于您已尝试将单引号添加到('新'),
请确保条件是您要查询的表格中的列
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
}
}