我具有此功能:
public function update($id, $value)
{
$query = 'UPDATE ' . table .
' SET ' . table . '.value = ?' .
' WHERE ' . table . '.value = ?';
$stmt = $this->connection->prepare($query);
if (!$stmt || !$stmt->bind_param('ii', $id, $value)) {
return false;
}
if (!$stmt->execute() || !$stmt->affected_rows) {
return false;
}
return true;
}
问题是此函数返回true,受影响的行返回1,但这不会更新我的实际mysql表。如果我试图在mysql内进行查询,则可以使用。有人可以告诉我为什么吗?
答案 0 :(得分:1)
这是正确的代码。
public function update($id, $value)
{
$query = 'UPDATE table SET value =? WHERE id =?';
$stmt = $this->mysqli->prepare($query);
$stmt->bind_param('ii', $value,$id);
$status = $stmt->execute();
if ($stmt === false)
{
trigger_error($this->mysqli->error, E_USER_ERROR);
return;
}
else
{
return $stmt->affected_rows;
}
}
答案 1 :(得分:1)
您可能忘记了更改$ id和$ value的顺序。因为现在有固定的UPDATE表SET table.value = $ id,而table.value = $ value。但是where子句正在查询需要更新的记录