PHP | MySQLのSQL文で連想配列の値を指定する方法
PHPでMySQLの操作につかうSELECT文やUPDATE文などで連想配列の値を文中に指定・記述する方法を紹介しています。
例えば、SQL文のなかに連想配列の値をそのまま指定すると以下のようなエラーが表示されます。
$sql = "SELECT * FROM テーブル名 WHERE id = $data['id']";
Parse error: syntax error, unexpected string content “", expecting “-" or identifier or variable or number in ~
また、配列のキー名が数値の場合は問題ありません。
$sql = "SELECT * FROM テーブル名 WHERE `id`= $data[1]";
MySQLのSQL文で連想配列の値を記述する
MySQLのSQL文で連想配列の値を記述する4つの方法をそれぞれサンプルコードで紹介しています。
波括弧構文を使う
波括弧構文を使う事でSQL文内に配列の値を指定する事が可能です。
$sql = "SELECT * FROM テーブル名 WHERE id = '{$data['id']}'";
sprintf()関数を使う
sprintf()関数を使ってSQL文の中に配列の値を指定します。
$sql = sprintf("SELECT * FROM テーブル名 WHERE id = '%s'", $data['id']);
変数に格納する
別途変数に格納してSQL文に記述します。
量にもよるかもしれませんが、それで体感できるほど処理が重くなるという事はないと思います。
$id = $data['id'];
$sql = "SELECT * FROM テーブル名 WHERE id = ’$id’";
プリペアドステートメントを使う
PDOクラスを利用している場合は、プリペアドステートメントを利用する事が可能です。
$stmt = $dbh->prepare("SELECT * FROM テーブル名 Where id = :id");
$stmt->bindParam(':id', $data['id']);
ディスカッション
コメント一覧
まだ、コメントがありません