我正在尝试使用PHP脚本中的预准备语句来实现更新语句,但它似乎没有更新数据库中的记录,我不知道为什么如此,如果你能分享一些见解。
$query = "UPDATE DatTable SET DF_PARTY_ID = :party_id,
DF_PARTY_CODE = :party_code,
DF_CONNECTION_ID = :connection_id WHERE DF_PARTY_ID = ':party_id'";
$stmt = $this->connection->prepare($query);
$stmt->bindValue(':party_id', $data[0], PDO::PARAM_INT);
$stmt->bindValue(':party_code', $data[1], PDO::PARAM_INT);
$stmt->bindValue(':connection_id', $data[2], PDO::PARAM_INT);
$stmt->execute();
Inspiring solution导致了这种方法。我该如何解决这个问题?
答案 0 :(得分:0)
确保数据库中存在您尝试更新的party_id
。
此外,如果您的表格为InnoDB
,请确保在更新后启用autocommit
或发出明确提交。
答案 1 :(得分:0)
不必猜测,必须实施基本的错误处理:
$arr = $stmt->errorInfo();
print_r($arr);
答案 2 :(得分:0)
可能没有帮助,但为什么你只有3个变量,当有4个时?我不能说我在PHP中有这样的经验,但在Perl和Oracle中它会引发错误。我尝试绑定2个SET和1个WHERE,并删除第一个赋值,看看是否有效。
答案 3 :(得分:0)
我不确定你是否想做你想做的事。
你的UPDATE语句基本上是说基于NEW值更新键和两个值,因为party_id在SET和WHERE子句中。
您可能希望将准备好的陈述更改为:
UPDATE DatTable SET DF_PARTY_ID =:party_id, DF_PARTY_CODE =:party_code, DF_CONNECTION_ID =:connection_id WHERE DF_PARTY_ID =':old_party_id'
将您的新party_id值绑定到:party_id,将CURRENT值绑定到:old_party_id