ユーザーは製品リストを取得し、このリストを、数量が事前に入力されたテキスト ボックスのあるページに表示します。ユーザーはこれらの数量を変更でき、フォームはこのデータを更新ページに送信します。次のステートメントを使用して、データベースの更新を実行しています..
$sql = "UPDATE reservations SET quantity=? WHERE tableID= ?";
これは、ユーザーがテキストボックスにゼロを入力した場合を除いて、どの値に対しても完全に機能し、その後、更新はこの値をスキップして既存の値のままにします。私はデータベースに直接アクセスし、問題なく値を手動でゼロに変更できますが、機能しない Web ベースのステートメントのようです。INTに設定され、VARCHARも試しましたが、どちらもうまくいきませんでした。SQL ステートメントがゼロ (0) 値を無視する原因は何ですか?
完全な更新コードは
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$conn = new PDO($dsn, $username, $password, $opt);
$sql = "UPDATE reservations SET quantity=? WHERE tableID= ?";
$stmt = $conn->prepare($sql);
foreach($_POST["Quantity"] as $id => $quantity) {
if ($quantity) $stmt->execute(array($quantity, $id));
}