PHP のテーブルを SQLite で更新しようとしています。私のコードは次のとおりです。
//Get params like this
$title = $_POST['title'];
...
$params = array($visible, $link, $title, $post, $month, $day, $year, $sub3);
$query = "UPDATE posts SET visible = ?, link = ?, title = ?, entries = ?, month = ?, day = ?, year = ? WHERE id = ?; COMMIT;";
$stmt = $db->prepare($query);
$result = $stmt->execute($params);
$_POST から値を取得すると、99% の確率でステートメントを実行するまでに、$_POST データではなくフィールドで null 値が更新されます ($sub3 は $_POST からのものではありません)。
値をハードコーディングすると、正常に動作します。同じコードパスにinsertステートメントもあります(最初に新しいデータかどうかを確認し、そうでない場合はINSERTを実行します)。挿入は毎回正常に機能します ($_POST からのデータ)。
また、他の 3 つのテーブルにもこのようなコードがあり、すべて機能します。これは、そうでない唯一のテーブルです。他のテーブルと比べて、テーブルのセットアップに違いはありません。
これは別のテーブルで機能します。
$params = array($name, $username, $email, $level, $sub3);
$query = "UPDATE users SET name = ?, username = ?, email = ?, level = ? WHERE id = ?; COMMIT;";
$stmt = $db->prepare($query);
$result = $stmt->execute($params);
私はbindParam、bindValue、文文字列を準備せずに手動で作成しようとしましたが、$_POSTからのものである限り、うまくいきません。
私は何が欠けていますか?他に試せることはありますか?