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)但在数据库中存储为'O'relly

在插入数据库之前看起来像 Mysql 带斜杠。这是真的?

4

1 回答 1

1

SQL 不会去掉反斜杠,它会在解析命令时(正确地)解释它。没有斜杠,SQL 会看到

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

这是字符串 'O' 后跟语法错误。(或者更糟的是:这可以被用于可怕的“sql 注入攻击”)。

简而言之,这是按预期工作的。

于 2012-02-06T16:51:42.293 回答