PHP:SQL标记没有任何意义

PHP:SQL标记没有任何意义,php,sql,boolean,Php,Sql,Boolean,可能重复: 我的代码在上次检查时运行良好,但现在似乎已经坏了。以下是错误: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/nerblog/public_html/nerblog/arch.php on line 4 。。。这是第4行的代码: $q=mysql\u querySELECT*FROM main,其中月='$month'和年='$year'限制1

可能重复:

我的代码在上次检查时运行良好,但现在似乎已经坏了。以下是错误:

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/nerblog/public_html/nerblog/arch.php on line 4
。。。这是第4行的代码:

$q=mysql\u querySELECT*FROM main,其中月='$month'和年='$year'限制12个订单,按id描述; 而$sql=mysql\u fetch\u数组$q
您的SQL查询失败。尝试将订单后的“限制”命令移动到查询结束:

SELECT * FROM main WHERE month='$month' AND year='$year' ORDER BY id DESC LIMIT 12

您的SQL查询失败。尝试将订单后的“限制”命令移动到查询结束:

SELECT * FROM main WHERE month='$month' AND year='$year' ORDER BY id DESC LIMIT 12
存在是有原因的

您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解第1行“ORDER BY id DESC”附近使用的正确语法

也就是说,它没想到在你放的地方会看到秩序。这样做的原因是,限额应该在“订单日期”之后,而不是之前。

存在是有原因的

您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解第1行“ORDER BY id DESC”附近使用的正确语法


也就是说,它没想到在你放的地方会看到秩序。原因是,限额应在订购日期之后,而不是之前。

根据文档:

对于返回resultset的SELECT、SHOW、description、EXPLAIN和其他语句,mysql_query在成功时返回资源,在出错时返回FALSE

对于其他类型的SQL语句,INSERT、UPDATE、DELETE、DROP等,mysql_查询成功时返回TRUE,错误时返回FALSE

如果用户没有访问查询引用的表的权限,mysql\u查询也将失败并返回FALSE

mysql\u fetch\u数组函数需要mysql\u查询返回一个结果资源。如果调用失败,它将返回false,这就是传递给mysql\u fetch\u数组函数的内容,因此它失败

问题实际上在SQL中。您需要将LIMIT子句放在查询的最后,如下所示:

 SELECT * FROM main WHERE month='$month' AND year='$year' ORDER BY id DESC LIMIT 12 
确保查询中的错误不会渗入其他代码的一种方法是首先检查值:

$q = mysql_query("SELECT * FROM main WHERE month='$month' AND year='$year' ORDER BY id DESC LIMIT 12");

if($q != FALSE)
{
   // Query didn't fail, so get results
   while ($result = mysql_fetch_array($q))
   {
      // Do something with $result
   }

}

根据文件:

对于返回resultset的SELECT、SHOW、description、EXPLAIN和其他语句,mysql_query在成功时返回资源,在出错时返回FALSE

对于其他类型的SQL语句,INSERT、UPDATE、DELETE、DROP等,mysql_查询成功时返回TRUE,错误时返回FALSE

如果用户没有访问查询引用的表的权限,mysql\u查询也将失败并返回FALSE

mysql\u fetch\u数组函数需要mysql\u查询返回一个结果资源。如果调用失败,它将返回false,这就是传递给mysql\u fetch\u数组函数的内容,因此它失败

问题实际上在SQL中。您需要将LIMIT子句放在查询的最后,如下所示:

 SELECT * FROM main WHERE month='$month' AND year='$year' ORDER BY id DESC LIMIT 12 
确保查询中的错误不会渗入其他代码的一种方法是首先检查值:

$q = mysql_query("SELECT * FROM main WHERE month='$month' AND year='$year' ORDER BY id DESC LIMIT 12");

if($q != FALSE)
{
   // Query didn't fail, so get results
   while ($result = mysql_fetch_array($q))
   {
      // Do something with $result
   }

}

这是一个布尔值,因为您的查询无效。这是一个布尔值,因为您的查询无效