我的PDO声明出了什么问题?

时间:2015-09-08 06:43:14

标签: php pdo

// 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的命令,检查错误,记录错误,捕获异常&给我发电子邮件。

2 个答案:

答案 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()。当然,您必须检查正在执行的实际文件。

我将借此机会指导所有发烧友程序员'注意阅读错误信息的极端乐于助人。尽管有共同的信念,但这不仅仅是一种责备,阅读和你做错了什么!"让你猜测原因,但精确而详细的解释。只需要阅读错误信息即可获得线索。

我也借此机会指导所有发烧友程序员'注意这样一个事实:如果只使用回显错误信息的常见做法,将堆栈跟踪留在后面,则会忽略关于错误的真正原因的信息。