嘿,我在尝试访问我的网站时遇到此错误; “您的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);
如果你有任何想法,请我完全迷失。
答案 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语法)。