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


storing source efficiently into sql escaping

我有存储源代码到一个小脚本bin数据库的问题。问题是,用于从数据库查看的语法高亮中打印的代码有换行符,它不应该,我也在数据库中看到文本以相同的方式存储。

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

我错过了什么吗?由于

下面的代码是对db的插入,所涉及的值是$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. mysql_real_escape_string不应该与mysqli一起使用
  2. 然而,这也不应该是一个问题
  3. 很可能你的"解决方案"是与条带斜杠配对在fetch
  4. 所以,正确的解决方案是
    • 关闭魔法引号
    • 和使用mysqli_real_escape_string