这是我的代码,我在textarea中提交 sunny \“
<html>
<head>
<title>mysql Test</title>
</head>
<body>
<?php
$d=$_GET['s'];
require("sql.php");
mysql_query("insert into test value(NULL,'".mysql_real_escape_string($d)."')",$cn);
?>
<form name="form1" method="get" action="">
<textarea name="s"></textarea>
<input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>
当我在phpmyadmin中查看插入的文本时,它看起来像
sunny \\ \"
但我希望orignal字符串像
sunny \ "
注意:php.ini
中的magic_quotes_gpc已关闭
答案 0 :(得分:1)
尝试使用PDO。不推荐使用mysql_ *函数,并打开代码以解决各种SQL注入问题。
// code here to connect to your database
...
// create a new statement
$d = $_GET['s'];
$sth = $dbh->prepare("insert into test values(null,:s,:cn)");
$sth->bindParam(":s",$d);
$sth->bindParam(":cn",$cn);
$sth->execute();
如果真正关闭魔术引号,上面的PDO方法应该注意转义值并插入它们而不需要额外的斜杠
还要注意你的应用程序不依赖magic quotes并且那些已被关闭,因为它是PHP中引入的一个很大的安全性错误,它已经被恢复了一段时间(请参阅链接的警告和解释) )。
答案 1 :(得分:-2)
不是一个好方法,但会以这种方式为你工作
$d=$_GET['s'];
$a = stripslashes($d);
$b = $t. " \\"."\\";
mysql_query("insert into test value(NULL,'".mysql_real_escape_string($b)."')",$cn);
这会在你的dtabase中给你一个“\”