PDO'更新'带参数的语句不起作用

时间:2015-12-11 11:38:50

标签: php mysql pdo sql-update

我有这个PDO声明没有更新我的数据库并且没有返回任何错误:

// $database = initialized PDO instance
$status = 'processing';
$submission_id = 213;

$sql  = "UPDATE `submission` 
  SET `status`=':status' 
  WHERE `id`=':submission_id'";

$query = $database->prepare($sql);
$result = $query->execute(array(
  ':status' => $status, 
  ':submission_id' => $submission_id
));

var_dump($result);            // true
var_dump($query->rowCount()); // 0
$database->errorCode();       // 0000
$database->errorInfo();       // [0]=> string(5) "00000" [1]=> NULL [2]=> NULL

如果我从$ sql中删除参数,它可以工作:

$sql2 = "UPDATE `submission` SET `status`='processing' WHERE `id`='214'";

$query->rowCount()之外的所有结果都是相同的,这次返回1并更新数据库。我使用相同的PDO对象进行其他插入和选择操作,效果很好。

为什么第一个参数化查询不起作用?

3 个答案:

答案 0 :(得分:2)

不要引用参数:

$sql  = "UPDATE `submission` 
  SET `status`=:status 
  WHERE `id`=:submission_id";

答案 1 :(得分:1)

停止使用双引号

PossibleAnswers

答案 2 :(得分:1)

根据PDO statement

  

准备好的陈述的参数不需要引用;该   驱动程序自动处理这个。

首先在查询中的占位符中引用引号

im = PIL.Image.open(filename)
PIL.Image.Image.save(im, newfilename, "PDF", resoultion = 200.0,quality = 100)