1

ユーザー プロファイルを更新するための SQL クエリを正しく取得するのに問題があります。私は(基本的に)同じクエリを使用してデータを挿入しましたが、正常に動作しました(実行配列に WHERE id=clientid と clientid がなくても)。以下のクエリはデータベース内のデータを更新しません。

すべての変数が投稿されていることをテストして確認しました。補足として、このクエリは sql インジェクションから安全ですか?

$conn = new PDO("mysql:host=$DB_HOST;dbname=$DB_DATABASE",$DB_USER,$DB_PASSWORD);

// Deal with the POST variables here...(excluded)

$sql = "UPDATE clients (firstname, lastname, origincountry, dob, gender, email, phone, address, postal, city, province, referred, notes)
        VALUES (:firstname, :lastname, :origincountry, :dob, :gender, :email, :phone, :address, :postal, :city, :province, :referred, :notes)
        WHERE id = :clientid" ;

$q = $conn->prepare($sql);

$q->execute(array(':firstname'=>$firstname,
                  ':lastname'=>$lastname,
                  ':origincountry'=>$origincountry,
                  ':dob'=>$dob,
                  ':gender'=>$gender,
                  ':email'=>$email,
                  ':phone'=>$phone,
                  ':address'=>$address,
                  ':postal'=>$postal,
                  ':city'=>$city,
                  ':province'=>$province,
                  ':referred'=>$referred,
                  ':notes'=>$notes,
                  ':clientid'=>$clientid));
4

1 に答える 1

3

SQLが無効です。UPDATEを参照してください。(それを指摘してくれた@rambocoderに感謝します)。

このSQLを使用します。

UPDATE clients SET firstname = :firstname, lastname = :lastname, origincountry = :origincountry, dob = :dob, gender = :gender, email = :email, phone = :phone, address = :address, postal = :postal, city = :city, province = :province, referred = :referred, notes = :notes
WHERE id = :clientid
于 2012-08-26T22:39:55.720 に答える