我有一个查询
public static function TestQuery(
$start=0,
$limit=0){
$sql = "
SELECT count(*) AS total
FROM db.table1
JOIN db.table2
ON table1.fieldID = {$fieldID}
AND table2.assigned = 'N'";
$qry = new SQLQuery;
$qry->query($sql);
if($row = $qry->fetchRow()){
$total = intval($row->total);
}
return $total;
}
工作正常但是当我添加下面的限制时,它不起作用并给我错误
public static function TestQuery(
$start=0,
$limit=0){
$sql = "
SELECT count(*) AS total
FROM db.table1
JOIN db.table2
ON table1.fieldID = {$fieldID}
AND table2.assigned = 'N'";
//this fails
if($recordlimit > 0) $sql .= "LIMIT {$startRecord}, {$recordLimit} ";
//
$qry = new SQLQuery;
$qry->query($sql);
if($row = $qry->fetchRow()){
$total = intval($row->total);
}
return $total;
}
任何帮助将不胜感激
答案 0 :(得分:4)
在LIMIT前面放一个空格:
" LIMIT {$startRecord}, {$recordLimit} "
没有空格你的SQL会导致语法错误。
编辑:这是答案不正确!在LIMIT之前没有空格的MySQL不会出错(但是早期版本的phpmyadmin会错误地解析这样的sql)。
答案 1 :(得分:3)
您的变量称为$ limit和$ start:
if($limit > 0) $sql .= " LIMIT {$start}, {$limit} ";
答案 2 :(得分:2)
尝试更改
if($recordlimit > 0) $sql .= "LIMIT {$startRecord}, {$recordLimit} ";
要
if($recordlimit > 0) $sql .= " LIMIT {$start}, {$limit} ";
看起来你的SQL被挤压在一起并且应该得到一个错误的语法错误,并且你有错误的(貌似)变量名称。
答案 3 :(得分:0)
错误的变量
if($recordlimit > 0) $sql .= "LIMIT {$startRecord}, {$recordLimit} ";
解决 感谢