我有这个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对象进行其他插入和选择操作,效果很好。
为什么第一个参数化查询不起作用?
答案 0 :(得分:2)
不要引用参数:
$sql = "UPDATE `submission`
SET `status`=:status
WHERE `id`=:submission_id";
答案 1 :(得分:1)
停止使用双引号
PossibleAnswers
答案 2 :(得分:1)
准备好的陈述的参数不需要引用;该 驱动程序自动处理这个。
首先在查询中的占位符中引用引号
im = PIL.Image.open(filename)
PIL.Image.Image.save(im, newfilename, "PDF", resoultion = 200.0,quality = 100)