[英]Prepared SQL Statement in PHP Not Updating MySQL Database Row
我試圖用PHP腳本中的新行更新MySQL數據庫表。 該腳本從前端HTML表單調用,該表單被序列化並作為$ _POST變量傳遞給PHP。
$stmt = $con->prepare("UPDATE blog SET tag = ?, datestamp = ?, title = ?, content = ?, views = ?, shares = ? WHERE id=?");
$stmt->bind_param("ssssiii", $tag, $datestamp, $title, $content, $views, $shares, $postid);
$stmt->execute();
/ Check whether the execute() succeeded
if ($stmt->errno) {
echo "FAILURE! " . $stmt->error;
}
else {
echo var_dump($stmt);
printf("%d Row updated.\n", $stmt->affected_rows);
}
該請求不會引發錯誤,但是數據庫行未更新,並且輸出“ 0行已更新”。 序列化的數據將作為正確的類型(適當時為字符串和整數)發送。 有誰知道是什么原因造成的?
echo var_dump($ stmt)返回:
object(mysqli_stmt)#2 (9) { ["affected_rows"]=> int(0) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(7) ["field_count"]=> int(0) ["errno"]=> int(0) ["error"]=> string(0) "" ["sqlstate"]=> string(5) "00000" ["id"]=> int(1) }
您的代碼看起來不錯,請仔細檢查什么是$postid
以及是否與博客表中具有id的記錄匹配。
還要確保您使用的數據庫正確(檢查連接詳細信息)。
旁注:請勿使用echo var_dump()
, var_dump()
本身將對其進行回顯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.