我的代码有什么问题?具体的错误信息为:
你的SQL语法有错误;查看与MySQL服务器版本对应的手册,以便在第5行 中使用"*"附近的正确语法。我的代码是:
if (isset($_POST['submit'])) {
$name = $_POST['name'];
$query = mysql_query("
SELECT timein, timeout
FROM studentInfo
WHERE name = '$name'
ORDER BY time DESC
LIMIT *
")
or die("Error querying database ".mysql_error());
while($minutes = mysql_fetch_array($query)){
echo "timein: ".$minutes['timein']."<br />";
echo "timeout: ".$minutes['timeout']."<br />";
}
}
这是错误的:
LIMIT *
在Limit
后面放一个整数,而不是*
的通配符
根据文档:
LIMIT子句可用于约束SELECT语句返回的行数。LIMIT接受一个或两个数字参数,它们必须都是非负整数常量(除非使用预处理语句)。
有两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。初始行的偏移量为0(不是1):
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
要检索从某个偏移量到结果集末尾的所有行,可以为第二个参数使用一个较大的数字。该语句检索从第96行到最后一行的所有行:
SELECT * FROM tbl LIMIT 95,18446744073709551615;
使用一个参数,该值指定从结果集开头返回的行数:
SELECT * FROM tbl LIMIT 5; # Retrieve first 5 rows
也就是说,LIMIT row_count相当于LIMIT 0, row_count。
极限应为非负整数,不能为*
$query = mysql_query("
SELECT timein, timeout
FROM studentInfo
WHERE name = '$name'
ORDER BY time DESC
LIMIT 100
")
or die("Error querying database ".mysql_error());
它将返回前100行