// Check for existence - don't add a duplicate
$sqlQuery = $pdo->prepare('SELECT campaign_id FROM campaigns WHERE (customer_id=:customerId) AND (title=:campaignTitle) AND (description=:campaignDescription) AND (start_time=:startTimeStamp) AND (end_time=:endTimeStamp)');
$sqlQuery->bindParam(':customerId', $customerId); // , PDO::PARAM_INT
$sqlQuery->bindParam(':campaignTitle', $campaignTitle);
$sqlQuery->bindParam(':campaignDescription', $campaignDescription);
$sqlQuery->bindParam(':startTimeStamp', $campaignTitle);
$sqlQuery->bindParam(':endTimeStamp', $endTimeStamp);
$sqlResult = DatabaseCommand($sqlQuery);
结果
致命错误:未捕获的异常' PDOException'与消息 ' SQLSTATE [42000]:语法错误或访问冲突:1064您有 SQL语法错误;查看与您的手册相对应的手册 MySQL服务器版本,用于在':customerId附近使用正确的语法 AND(title =:campaignTitle)AND(description =:campaignDescription)A' 在第1行'在E:\ coding \ Web中 开发\ Xampp \ htdocs \ api \ addCampaign.php:42堆栈跟踪:#0 E:\ coding \ Web Development \ Xampp \ htdocs \ api \ addCampaign.php(42): 在E:\ coding \ Web中抛出PDO->查询(' SELECT广告...')#1 {main} 第42行的Development \ Xampp \ htdocs \ api \ addCampaign.php
但我不明白为什么
[更新]对于那些想要查看DatabaseCommand()
代码的人来说,这就是它。
function DatabaseCommand($sqlCommand)
{
$result = $sqlCommand->execute();
return $result;
}
还有一些额外的代码,但只记录调试porpoises的命令,检查错误,记录错误,捕获异常&给我发电子邮件。
答案 0 :(得分:2)
更新: 似乎这不是解决方案,只是提高了可读性
在=
和参数之间加一个空格:
$sqlQuery = $pdo->prepare('SELECT campaign_id FROM campaigns WHERE (customer_id= :customerId) AND (title= :campaignTitle) AND (description= :campaignDescription) AND (start_time= :startTimeStamp) AND (end_time= :endTimeStamp)');
答案 1 :(得分:1)
您在此处发布的此代码与您收到的错误消息无关。
你必须检查addCampaign.php文件,第42行,你正在使用query()方法而不是execute()。当然,您必须检查正在执行的实际文件。
我将借此机会指导所有发烧友程序员'注意阅读错误信息的极端乐于助人。尽管有共同的信念,但这不仅仅是一种责备,阅读和你做错了什么!"让你猜测原因,但精确而详细的解释。只需要阅读错误信息即可获得线索。
我也借此机会指导所有发烧友程序员'注意这样一个事实:如果只使用回显错误信息的常见做法,将堆栈跟踪留在后面,则会忽略关于错误的真正原因的信息。