如何在addslashes()之后在mysql DB中插入斜杠

时间:2012-02-06 16:36:58

标签: php mysql addslashes

<?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条带斜线。这是真的吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

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