SQL 语法错误 'LIMIT 0, 10'

Rob*_*a55 2 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);
Run Code Online (Sandbox Code Playgroud)

如果您有任何想法,请因为我完全迷失了。

Bil*_*win 5

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

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

如果您可以输出最终的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());
Run Code Online (Sandbox Code Playgroud)

您将在错误日志中看到:

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
Run Code Online (Sandbox Code Playgroud)

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