Php PDO、can和x27;I don’我在事先准备好的陈述中找不到什么错
我试图使简单的搜索功能,但有一个错误,我无法找到原因 我检查了SQL查询结果是否正确生成。但是,执行此准备好的语句会导致未知故障。为什么此Php PDO、can和x27;I don’我在事先准备好的陈述中找不到什么错,php,mysql,pdo,Php,Mysql,Pdo,我试图使简单的搜索功能,但有一个错误,我无法找到原因 我检查了SQL查询结果是否正确生成。但是,执行此准备好的语句会导致未知故障。为什么此execute()返回false public function searchConcept(string $cplx = '', string $name = '', string $desc = '', int $page = 0) { $SQL = 'select * from concept '; $SQL_criteria = arr
execute()
返回false
public function searchConcept(string $cplx = '', string $name = '', string $desc = '', int $page = 0)
{
$SQL = 'select * from concept ';
$SQL_criteria = array();
// Criteria
if($cplx) { $SQL_criteria[] = 'cplx:cplx'; }
if($name) { $SQL_criteria[] = 'name like :name'; }
if($desc) { $SQL_criteria[] = 'description like :desc'; }
if($SQL_criteria) { $SQL .= 'where '.implode(' and ', $SQL_criteria).' '; }
$SQL .= 'limit :page, 15';
$stmt = $this->db->prepare($SQL);
if($cplx) { $stmt->bindValue(':cplx', $cplx); }
if($name) { $stmt->bindValue(':name', '%'.$name.'%'); }
if($desc) { $stmt->bindValue(':desc', '%'.$desc.'%'); }
$stmt->bindValue(':page', $page*15);
if($stmt->execute()) {
$rst = $stmt->fetchAll(\PDO::FETCH_OBJ);
return $rst;
} else {
throw new DBRFError();
}
}
DBRFError是我创建的自定义错误类
#
加1####
我认为cplx:cplx
不重要<代码>$cplx的值类似于“>5”。
我并没有实际测试那个特定的情况,但我只是在没有cplx块的情况下测试,并且导致了一个错误
#
加2####
我只是找到了问题的根源。
$SQL.='limit:page,15'代码>它会导致错误。我这样做是为了寻呼。如果没有这个块,代码工作得很好。但是,我不明白为什么。您的where子句中缺少“=”。这是固定代码:
if($cplx) { $SQL_criteria[] = 'cplx=:cplx'; }
如果打印生成的sql并手动执行会怎么样?我是这样做的。我想我找到了问题的根源。