itLinkedInPocketCopyPHPのPDOで挿入を行うINSERT文の使い方をまとめました。例で出すサンプルコードで使用するテーブルは、下記のものを使用します。INCREMENTです。80PDOでのINSERT文の書き方PDOでINSERT文を実行する方法は大きく分けて2つあります。queryprepare→executequeryとprepareを使用したINSERT文の実行方法をそれぞれで解説していきます。query1行の挿入queryは、実行するINSERT文がソースコード上で既に決まっている場合に使用します。query($sql);今回はソースコード上で商品名の「ナス」と値段の「70」を直接書いてINSERTしました。文字列を挿入する場合は、VALUESにシングルクオーテーション、またはダブルクオーテーションで囲う必要があります。実行すると、ナスと70がしっかり挿入されていることが分かります。複数行を挿入する場合は、VALUEの後にカンマ区切りで追加したいデータを入力します。変数を使用したい場合は、文字列連結でも対応できます。query($sql);ただし、この場合に文字列連結で組み込む変数は、外部のユーザーから取得した値を何の検証もせずに組み込むと、SQLインジェクション攻撃を受ける可能性があります。PHPでSQLインジェクション攻撃の対策方法【PDO】ユーザーから入力された値を挿入したい場合(そのほうが多くなると思いますが)、後述のprepareを使用してください。prepare→executeprepareは、SQL文を一度実行準備を行い、その後に変数を当てはめて実行できる機能です。PDOでprepareの使い方【PHP】prepare()でクエリの実行準備bindValue()でクエリ内の値を設定execute()で挿入の実行という流れでINSERTを行います。実行準備の段階でINSERT文と認識するため、SQLインジェクション攻撃のようにクエリを改ざんされることがありません。そのため、セキュリティに強いprepareからクエリを実行する方が基本的にオススメです。execute();コロン付きのパラメータで、のちに代入する値を指定しておきます。その後、bindValueで値を設定後、executeでクエリが実行されます。複数行を挿入する場合は、bindValueで置き換えるコロン付きパラメータを命名をしっかり行毎に変えておきましょう。execute();もっと大量のデータをprepareから挿入する場合は、配列にデータを入れてforeachで繰り返す書き方がオススメです。INCREMENTかつプライマリキーが設定されたカラムが存在する場合、挿入したidを取得できるlastInsertIdというメソッドがあります。今回のサンプルテーブルでは、「id」がそれに該当するため、挿入後にidの値を取得できます。4次に挿入するデータは4つ目なので、idの値である4を取得できました。結果セットのオブジェクト$sthではなく、大元のPDOオブジェクト$pdoから取得できる機能なのでご注意ください。挿入されたデータ件数を取得するrowCountINSERTした結果、挿入された件数を取得できるrowCount()というメソッドがあります。2INSERTで2件のデータを挿入したため、rowCountで2を取得できました。IGNORE~」と入力することで、重複するデータが存在する場合は無視することが出来ます。今回のテーブルでは、「name」にUNIQUE制約を設けています。同じ野菜の名前は挿入されないように、IGNOREを使用してみましょう。0「きゅうり」は既に存在するため、UNIQUE制約にひっかかり、IGNORE文で無視されました。結果、件数を取得するrowCountでは0となります。UPDATE」という機能もあります。今回のテーブルでは、「name」にUNIQUE制約を設けています。存在する「きゅうり」を挿入しようとした場合は、挿入は行わず「値段」を変更する、という処理を行ってみます。query($sql);このクエリを実行すると、データを挿入されず、「きゅうり」の列の「price」が80⇒70に変更されます。70PDOのINSERTの使い方と、それに関わる機能やメソッドについてまとめました。INSERT文の書き方に迷った時、この記事が参考になれば幸いです。以上、PDOでINSERTの使い方、でした。今回で10記事目の投稿になります。コメントをキャンセルメールアドレスが公開されることはありません。