<?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条带斜线。这是真的吗?
答案 0 :(得分:1)
SQL不会去除反斜杠,它会在解析命令时(正确地)解释它。没有斜杠,SQL会看到
INSERT INTO makes VALUES(null, 'O'relly')
是字符串'O',后跟语法错误。 (或者更糟糕的是:这可以被用于恐惧“sql注入攻击”)。
简而言之,这是按预期工作的。