如何在不添加斜杠的情况下在mysql中插入文本

时间:2013-12-28 06:57:24

标签: php mysql

这是我的代码,我在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已关闭

2 个答案:

答案 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中给你一个“\”