PDOのプリペアド・ステートメントでテーブル名やフィールド名をエスケープするには。
PDOのプリペアド・ステートメントでテーブル名やフィールド名をエスケープするには。 たとえば下のSQLをPDOで使う場合。 SELECT * FROM posts WHERE name LIKE '%検索文字列%' こうすればいいと思います。 $keyword = '%検索文字列%'; $statement = $db->prepare("SELECT * FROM posts WHERE name LIKE :keyword"); $statement->bindParam(':keyword', $keyword, PDO::PARAM_STR); それで、お聞きしたいのはテーブル名やフィールド名に使用DBの予約語が使われている場合です。 たとえばMySQLの予約語の'explain'。 下記では当然ダメです。 $db->prepare("SELECT * FROM explain WHERE name LIKE :keyword"); 下記のようにバッククォートで囲めばいいのですが、使用DBをMySQLから別のに替える場合などに融通がききません。 $db->prepare("SELECT * FROM `explain` WHERE name LIKE :keyword"); テーブル名やフィールド名で、予約語を手軽に賢く使うにはどうすればいいでしょうか?
PHP・1,829閲覧・250