itLinkedInPocketCopyPHPのPDOで行の更新を行うUPDATE文の書き方をまとめました。例として、下記のテーブルをサンプルコードで使用します。80PDOでのUPDATE文の書き方UPDATE句を含め、PDOでSQLを実行する方法は大きく分けて2つあります。queryprepare→executequeryとprepareを使用したUPDATE文の実行方法をそれぞれで解説していきます。queryqueryは、ソースコードで書くSQLが既に決まっている場合に使用します。query($sql);こちらは、nameが「にんじん」となっている行のpriceを「30」に変更する値下げのクエリです。実行して、「にんじん」の行のpriceが「30」となっていればクエリ成功です。80全行の更新UPDATE文は、WHERE句で条件を指定しない限り、すべてのカラムに変更処理を加えます。30これはこれで使う場面はあるのですが、ほとんどの場合は条件指定をした上で更新することが多いです。条件指定で更新をしたい場合は、WHEREの付け忘れには注意しましょう。クエリを書くときは、SETではなくWHEREから書き始めたほうが良いくらいです。変数にUPDATE文に組み込む場合の注意点UPDATE文で変数を使用したい場合は、文字列連結でも対応できます。query($sql);ただし、この場合に文字列連結で組み込む変数は、外部のユーザーから取得した値を何の検証もせずに組み込むと、SQLインジェクション攻撃を受ける可能性があります。PHPでSQLインジェクション攻撃の対策方法【PDO】ユーザーの入力内容に応じて更新を行う場合は、prepareを使用してください。prepare→executeprepareは、SQL文を一度実行準備を行い、その後に変数を当てはめて実行できる機能です。PDOでprepareの使い方【PHP】prepare()でクエリの実行準備bindValue()でクエリ内の値を設定execute()で更新の実行という流れでUPDATEを行います。実行準備の段階でUPDATE文と認識するため、SQLインジェクション攻撃のようにクエリを改ざんされることがありません。そのため、セキュリティに強いprepareからクエリを実行する方が基本的にオススメです。execute();コロン付きのパラメータで、のちに代入する値を指定しておきます。その後、bindValueで値を設定後、executeでクエリが実行されます。ソースコードの通り、SETで代入する値も、WHERE句の条件指定にも、コロン付きパラメータは使用できます。全行の更新こちらも同様に、WHERE句はない場合は全行の更新となります。execute();更新された件数を取得するrowCountUPDATEを行った結果、変更された行を取得したい場合はrowCount()を使用します。3rowCountは「更新対象の行数」ではなく「更新された行数」を返します。下記のUPDATEを行った場合、返す行数は2となります。2対象の行数は3件のはずですが、元々「にんじん」の行のpriceは50となっているので、変更する必要がなかったため、2件のみ変更されたと解釈します。UPDATE」という機能もあります。基本的にINSERT文に付与する形になります。今回のテーブルでは、「name」にUNIQUE制約を設けています。存在する「きゅうり」を挿入しようとした場合は、挿入は行わず「値段」を変更する、という処理を行ってみます。query($sql);このクエリを実行すると、データを挿入されず、「きゅうり」の列の「price」が80⇒70に変更されます。70以上、PDOでUPDATEの使い方、でした。コメントをキャンセルメールアドレスが公開されることはありません。