SQL语法错误'LIMIT 0,10'

时间:2012-12-27 01:30:08

标签: php sql web

嘿,我在尝试访问我的网站时遇到此错误; “您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以便在第1行'LIMIT 0,10'附近使用正确的语法”

我的第一行是<?php require_once('Connections/blog.php'); ?>

但似乎错误来自这里;

$maxRows_getDisplay = 10;
$pageNum_getDisplay = 0;
if (isset($_GET['pageNum_getDisplay'])) {
  $pageNum_getDisplay = $_GET['pageNum_getDisplay'];
}
$startRow_getDisplay = $pageNum_getDisplay * $maxRows_getDisplay;

mysql_select_db($database_blog, $blog);
$query_getDisplay = "SELECT news.title, news.pre,  
 DATE_FORMAT(news.updated, '%M %e, %Y') AS formatted 
 FROM news ORDER BY news.updated DESC LIMIT 2";
$query_limit_getDisplay = sprintf("%s LIMIT %d, %d", 
 $query_getDisplay, $startRow_getDisplay, $maxRows_getDisplay);
$getDisplay = mysql_query($query_limit_getDisplay, $blog) or die(mysql_error());
$row_getDisplay = mysql_fetch_assoc($getDisplay);

如果你有任何想法,请我完全迷失。

1 个答案:

答案 0 :(得分:4)

您创建了一个带有两个LIMIT子句的SQL语句,这是不允许的。

此示例显示了通过查看用于构建SQL字符串的代码来调试SQL的难度。

如果您可以输出 final SQL字符串来调试它,会容易得多。

$query_getDisplay = "SELECT news.title, news.pre,  
 DATE_FORMAT(news.updated, '%M %e, %Y') AS formatted 
 FROM news ORDER BY news.updated DESC LIMIT 2";
$query_limit_getDisplay = sprintf("%s LIMIT %d, %d", 
 $query_getDisplay, $startRow_getDisplay, $maxRows_getDisplay);
error_log("What's wrong with this SQL?  " . $query_limit_getDisplay);
$getDisplay = mysql_query($query_limit_getDisplay, $blog) or die(mysql_error());

您会在错误日志中看到:

What's wrong with this SQL?  SELECT news.title, news.pre,  
DATE_FORMAT(news.updated, '%M %e, %Y') AS formatted 
FROM news ORDER BY news.updated DESC LIMIT 2 LIMIT %d, %d

这样可以更容易地发现无效的SQL语法(假设您可以识别有效与无效的SQL语法)。