为什么这个sql无法正常工作?

时间:2010-04-20 18:41:51

标签: php phpunit

我有一个查询

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;

} 

任何帮助将不胜感激

4 个答案:

答案 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} ";

解决 感谢