php和mysql中的反斜杠
我有一个关于MySql和PHP中反斜杠的问题!我写了一个简单的测试代码php和mysql中的反斜杠,php,mysql,addslashes,Php,Mysql,Addslashes,我有一个关于MySql和PHP中反斜杠的问题!我写了一个简单的测试代码 include "src/db.inc.php"; $name="licon's"; $name=addslashes($name); $sql="insert into test values('$name')"; mysql_query($sql); $sql1="select * from test"; $rs=mysql_query($sql1); $row=mysql_fetch_assoc($rs); echo
include "src/db.inc.php";
$name="licon's";
$name=addslashes($name);
$sql="insert into test values('$name')";
mysql_query($sql);
$sql1="select * from test";
$rs=mysql_query($sql1);
$row=mysql_fetch_assoc($rs);
echo $row['name'];
当代码显示时,我想在表中插入一个带有单引号的字符串
1.我需要转义字符串,这里我使用函数addslashes()
。
因此,$name
将是这样的“licon的
”
2.但是当我在表中插入$name
并在mysql控制台中选择它时,由函数addslashes
添加的反斜杠消失了。如下所示:
mysql> select * from test;
+---------+
| name |
+---------+
| licon's |
+---------+
$sql1="select * from test";
$rs=mysql_query($sql1);
$row=mysql_fetch_assoc($rs);
echo $row['name'];
======
print: licon's
3.当我在PHP脚本中选择字段“name
”并打印它时,反斜杠也会消失。详情如下:
mysql> select * from test;
+---------+
| name |
+---------+
| licon's |
+---------+
$sql1="select * from test";
$rs=mysql_query($sql1);
$row=mysql_fetch_assoc($rs);
echo $row['name'];
======
print: licon's
所以我想知道函数
addslashes()
在变量$name
中添加反斜杠。为什么反斜杠会消失?如果您使用MySQL,那么使用MySQL\u real\u escape\u string($name)
或者使用mysqli\u real\u escape\u string($connection,$name)
如果您使用mysqli获取存储在MySQL数据库中的干净输入。- 启用magic_quotes时,所有“(单引号)、“(双引号)、\(反斜杠)都会自动用反斜杠转义
不,addslashes会向您发送到MySQL的数据添加斜杠,但MySQL会在将数据存储到数据库之前删除斜杠。MySQL会将\'解释为一段数据,而将单个\'解释为SQL语句语法的一部分。addslashes()的主要功能用于转义输入。我知道addslashes()的功能。但我想知道在PHP中选择此选项时,为什么不需要使用stripslashes(),您使用的是哪个PHP版本?因为没有斜杠!我使用wamp 2.4和PHP 5.4.16这不是重点!甚至我使用mysql\u real\u escape\u string($name),当我从mysql中选择反斜杠时,反斜杠仍然会消失!我只是想知道为什么我不需要使用stripslashes!这是唯一的一点tudouya,你应该在前面描述一下你想知道的内容。@tudouya阅读了完整的答案,然后得出结论,这不是重点和全部。我为我的ca感到抱歉放松!我读了你的更新评论!它解决了我的问题!再次抱歉!你的声誉!