Php 带有参数的PDO“UPDATE”语句不起作用

Php 带有参数的PDO“UPDATE”语句不起作用,php,mysql,pdo,sql-update,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

我的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对象,效果很好


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

不引用参数:

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

不要引用参数:

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

停止使用双引号

$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
));

停止使用双引号

$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
));
依照

编制报表的参数不需要引用;这个 驱动程序会自动处理这个问题

所以在查询中从占位符中换行引号

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

编制报表的参数不需要引用;这个 驱动程序会自动处理这个问题

所以在查询中从占位符中换行引号

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

从第一个查询占位符中结束引号!!谢谢大家!起初我没有引号,但遇到了一些其他错误,因此我添加了引号作为修复错误的尝试,删除了其他错误,这就是我在这里的原因。从第一个查询占位符中换行引号!!谢谢大家!起初我没有引用,但遇到了一些其他错误,因此我添加了它们作为修复它的尝试,删除了其他错误,这就是我如何得到这里的原因。