【发布时间】:2017-03-06 09:16:33
【问题描述】:
我要为这个错误而生气...
=> PDOStatement::execute(): SQLSTATE[42000]: 语法错误或访问冲突:1064
我已经在 HeidiSql 中执行了这个查询并且它有效...我错了什么??
之前谢谢你...
$sql = "select *
from projects pr
join projectTexts prt on pr.idProject = prt.idProject
join images img on pr.idImage = img.idImage
where ";
if($idProject != '#')
$sql .= "pr.idProject = :idp and ";
if($status != '#') {
$sql .= "pr.status = :sts and ";
}
$sql .= "prt.idLanguage = :idl
order by pr.idProject desc
limit :qt";
$getProjectWithTexts = $db->prepare($sql);
if($idProject != '#')
$getProjectWithTexts->bindParam(':idp',$idProject);
if($status != '#')
$getProjectWithTexts->bindParam(':sts',$status);
$getProjectWithTexts->bindParam(':idl',$idLanguage);
$getProjectWithTexts->bindParam(':qt',$qt);
$getProjectWithTexts->execute();
return $getProjectWithTexts;
【问题讨论】:
-
你为什么只发布了一个错误消息的存根?为什么你忽略了最有用的部分?
-
回显您的查询 (
$sql),并检查以确保它看起来不错。尝试在命令行或 phpmyadmin 中运行它并替换正确的绑定。它有效吗?检查完整的错误消息。它在哪里说它正在崩溃? -
"select * from projects pr join projectTexts prt on pr.idProject = prt.idProject join images img on pr.idImage = img.idImage where" 'where' 什么?
-
@aynber 我在 HeidiSQL 中写过它可以工作...
-
我不认为您在 heidisql 中使用 if 语句执行了上述代码。您执行了一条不同的 sql 语句。因此,出于调试目的,您需要考虑完整的错误消息和执行的最终 sql 语句。由于我们没有这些信息,我们无法为您提供帮助。