PDO ループを使用して複数行のデータを更新する
P粉384366923
P粉384366923 2023-10-24 09:38:58
0
2
853

複数行のデータを取得するフォームがあり、各項目にはユーザーが特定の項目についてコメントできるテキスト領域があります。返される項目の数は可変であり、一部またはすべてのボックスにコメントを残す必要はありません。

リーリー

echo ステートメントは、ユーザーが他のユーザーが入力した内容を変更できるため、データベースに現在保存されている内容をテキスト領域に入力します。

フォーム処理ページに渡されると、これが返されます..

リーリー

つまり、配列は正しく渡されているようです。このコードを使用してデータベースを更新しています

リーリー

しかし、これはまったく更新されていないようですが、どこで間違ったのでしょうか?

###どうもありがとうございます###
P粉384366923
P粉384366923

全員に返信(2)
P粉704066087

いくつかのこと:

  1. エラーが発生したときに PDOException をスローするように PDO を設定します。これによりデバッグが容易になります。
  2. プリペアド ステートメントのポイントは、異なる変数を使用して複数回呼び出すことができるため、一度だけ準備して複数回呼び出すだけで済むことです。パフォーマンスも大幅に向上します。

コード:

リーリー
いいねを押す +0
P粉994092873
<textarea name="comment[<?=$f1?>]" cols="25" rows="2"><?=$f2?></textarea>

<?php
$dsn = "mysql:host=xxxx;dbname=xxxxx";
$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 comment=? WHERE tableid= ?";
$stmt = $conn->prepare($sql);

foreach ($_POST["comment"] as $id => $comment) {
    if ($comment) {
        $stmt->execute([$comment, $id]);
    }
}
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート