mysql
ライブラリから移行した後、PDOを使用しています。古いreal_escape_string
関数の代わりに何を使用しますか?
単一引用符をエスケープしてデータベースに移動する必要があり、すべての文字列にスラッシュを追加せずにこれを処理するより良い方法があると思います。何を使うべきですか?
PDO Prepare を使用する必要があります
リンクから:
異なるパラメーター値で複数回発行されるステートメントに対してPDO :: prepare()およびPDOStatement :: execute()を呼び出すと、ドライバーがクエリプランのクライアント側および/またはサーバー側のキャッシュをネゴシエートできるようになり、アプリケーションのパフォーマンスが最適化されますメタ情報、およびは、パラメータを手動で引用する必要性を排除することにより、SQLインジェクション攻撃を防ぐのに役立ちます。
PDOは、mysql_escape_string()をPDO :: quote()メソッド。
PHPウェブサイトからの抜粋です:
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* Simple string */
$string = 'Nice';
print "Unquoted string: $string\n";
print "Quoted string: " . $conn->quote($string) . "\n";
?>
上記のコードは次を出力します:
Unquoted string: Nice
Quoted string: 'Nice'
準備されたステートメントを使用します。これらはデータと構文を区別するため、MySQLデータをエスケープする必要がありません。例参照 このチュートリアル 。