0
<?php
$link = mysql_connect('localhost', 'root', 'root')
    OR die(mysql_error());
mysql_select_db('autos') or die('no db');
$bookName = "O'relly";
$user = addslashes($bookName);

$query = "INSERT INTO makes VALUES(null, '{$user}')";
mysql_query($query) OR die(mysql_error());

var_dump($user);

?>

Var ダンプ出力は文字列 'O'relly' (長さ = 8) ですが、DB では 'O'relly として保存されます

DB に挿入する前に、Mysql ストリップ スラッシュのように見えます。それは本当です?

4

1 に答える 1

1

SQL はバックスラッシュを削除せず、コマンドを解析するときに (適切に) 解釈します。スラッシュがなければ、SQL は

INSERT INTO makes VALUES(null, 'O'relly')

これは、文字列 'O' の後に構文エラーが続きます。(さらに悪いことに、これは恐ろしい「SQLインジェクション攻撃」に悪用される可能性があります)。

要するに、これは意図したとおりに機能しています。

于 2012-02-06T16:51:42.293 に答える