我对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 $row['name'];
如代码所示,我想在表中插入带单引号的字符串。
1.我需要转义字符串,在这里我使用函数addslashes()
。因此$name
将会是类似这样的“ licon\'s
”。
2.但是当我插入$name
表并在mysql控制台中选择它时,该函数添加的反斜杠addslashes
消失了。如下所示:
mysql> select * from test;
+---------+
| name |
+---------+
| licon's |
+---------+
3.当我name
在PHP脚本中选择字段“ ”并打印时,反斜杠也消失了。
如下:
$sql1="select * from test";
$rs=mysql_query($sql1);
$row=mysql_fetch_assoc($rs);
echo $row['name'];
======
print: licon's
所以我想知道函数addslashes()
在变量中添加反斜杠$name
。为什么反斜杠消失了?
addlashes()和stripslashes()是在数据库中处理引号的一些旧方法。
原因是旧的PHP版本具有magic_quotes_gpc(),默认情况下它处于打开状态,这将对Get / Post / Cookie操作执行以下操作。
现在,当您需要回显时,将需要stripslashes()
新的PHP和mysql完全不需要,而且mysql非常适合处理您的报价和特殊章程,因此最好使用的是mysql_real_escape_string()或等效的mysqli_函数。
更重要的是,此功能自PHP 5.3.0起已被弃用,因此可能在您执行addslashes()时不执行任何操作
否,addslashes将斜杠添加到要发送到MySQL的数据中,但是MySQL会在将数据存储到数据库中之前将其删除。MySQL将\'解释为一条数据,而将单个'解释为SQL语句语法的一部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句