将源有效地存储到sql转义中

时间:2013-03-16 00:12:37

标签: php sql escaping

我遇到了将源代码存储到db中以获取小脚本bin的问题。问题是,用于从数据库中查看的语法高亮显示器中的打印代码具有不应该的换行符,我在db中也看到了文本以相同的方式存储。

我尝试过使用kindk方法来完成这项工作,起初我认为这是一个包装问题,所以我在输入表单上设置了hard。然后添加了addslashes,但是没有用,我已经尝试了magic_quotes,在这种情况下,如下所示,我尝试了mysql_real_escape_string,来自$ content的文本将存储在数据库中,并且它们不应该存在换行符。

我错过了什么吗?感谢

以下代码是插入数据库,相关值是$ content

<?php
session_start();
$submit = $_POST['submit'];
$sniptitle = ($_POST['sniptitle']);


$date = date("Y-m-d H:i:s"); 
$user = $_SESSION['username'];
$lang = ($_POST['lang']);
$con=mysqli_connect("localhost","xxxx","xxxx","xxxx");


$content = mysql_real_escape_string($_POST['snipcontent']);
// ^^^HERE IS THE ISSUE ^^^                           



    if(isset($_POST['submit'])) { 


                                    // Check connection
                                if (mysqli_connect_errno()) 
                                  {
                                  echo "Failed to connect to MySQL: " . mysqli_connect_error();
                                  }





                                mysqli_query($con,"INSERT INTO code_lib ( snip_title , snip_content , posted_by , lang , datetime )
                                VALUES ('$sniptitle' , '$content' , '$user' , '$lang' , '$date' )");


                                mysqli_close($con);

                                header ("Location: xxx"); // Move back to a page
                                exit();
                                }


    ?> 

1 个答案:

答案 0 :(得分:0)

  1. mysql_real_escape_string不应该以任何方式与mysqli一起使用
  2. 然而,它不应该是一个问题
  3. 很可能你的“解决方案”与fetch上的stripslashes配对
  4. 所以,正确的解决方案是
    • 关闭魔术报价
    • 并使用mysqli_real_escape_string