如何在addslashes()之后在mysql数据库中插入斜杠
<?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);
?>
变量转储输出是字符串 'O\'relly' (长度=8) 但在数据库中存储为'O'relly
看起来像Mysql在插入数据库之前删除斜杠。这是真的吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
SQL 不会去除反斜杠,它会在解析命令时(正确地)解释它。如果没有斜杠,SQL 将看到
哪个是字符串“O”,后跟语法错误。 (或者更糟糕的是:这可以被利用来进行可怕的“sql注入攻击”)。
简而言之,这正在按预期进行。
SQL doesn't strip the backslash, it interprets it (properly) when parsing your command. Without the slash, SQL would see
which is the string 'O' followed by a syntax error. (Or worse: this can be exploited for the dread "sql injection attack").
In short, this is working as intended.