PHP | MySQLのSQL文で連想配列の値を指定する方法

PHP,PHP MySQL

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']);

PHP,PHP MySQL

Posted by Yousuke.U