mysql_real_escape_string()
および
しかし、今のところ、スクリプトは(苦労して)sqlステートメントをデータ/パラメーターと混合する必要があり、次のステップでMySQLサーバーはデータをステートメントから分離する必要があります。
(サーバー側)プリペアドステートメント
クエリの両方の「部分」は別々に送信され、(MySQLサーバーの)SQLパーサーは、ステートメントの終わりとデータの始まりについて「混乱」することはありません。
php-mysql
モジュールはプリペアドステートメントを認識しませんが、 php-mysql i
および
$pdo = new PDO('mysql:host=localhost;dbname=test', '...', '...');
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$stmt = $pdo->prepare('
UPDATE
Videos
SET
Title=:title ,
Preacher=:preacher ,
Date=:date ,
Service=:service ,
File=:file ,
Description=:description
WHERE
id=:id
');
$stmt->bindParam(':title', $_POST['title']);
$stmt->bindParam(':preacher', $_POST['preacher']);
$stmt->bindParam(':date', $_POST['date']);
$stmt->bindParam(':service', $_POST['service']);
$stmt->bindParam(':file', $_POST['file']);
$stmt->bindParam(':description', $_POST['description']);
$stmt->bindParam(':id', $_GET['id']); // really _GET?
$stmt->execute();
1回の操作で$stmtを使用すると、肥大化する可能性があります。ただし、それ以外の場合は、パラメーターごとにmysql_real_escape_string()を呼び出す必要があることを考慮してください。