如何在addslashes()之后在mysql数据库中插入斜杠

发布于 2025-01-02 18:12:52 字数 422 浏览 0 评论 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);

?>

变量转储输出是字符串 'O\'relly' (长度=8) 但在数据库中存储为'O'relly

看起来像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);

?>

Var dump output is string 'O\'relly' (length=8)
But in DB stored as 'O'relly

Looks like Mysql strip slashes before insert in DB. It's true?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

樱花坊 2025-01-09 18:12:52

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

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

哪个是字符串“O”,后跟语法错误。 (或者更糟糕的是:这可以被利用来进行可怕的“sql注入攻击”)。

简而言之,这正在按预期进行。

SQL doesn't strip the backslash, it interprets it (properly) when parsing your command. Without the slash, SQL would see

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文