Php 带有参数的PDO“UPDATE”语句不起作用
我的PDO语句不会更新我的数据库,也不会返回任何错误: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
// $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";
从第一个查询占位符中结束引号!!谢谢大家!起初我没有引号,但遇到了一些其他错误,因此我添加了引号作为修复错误的尝试,删除了其他错误,这就是我在这里的原因。从第一个查询占位符中换行引号!!谢谢大家!起初我没有引用,但遇到了一些其他错误,因此我添加了它们作为修复它的尝试,删除了其他错误,这就是我如何得到这里的原因。