2013-03-16 38 views
0

我有一個小的腳本bin存儲源代碼到數據庫的問題。問題是用於從數據庫中查看的語法高亮顯示器中的打印代碼在它不應該出現的地方出現換行符,我在數據庫中也看到了文本以相同方式存儲的換行符。將源代碼有效存儲到sql轉義

我已經嘗試使用幾個k的手段,使這項工作,起初我以爲是一個包裝問題,所以我設置包裝硬輸入窗體。然後添加addslashes,並沒有工作,ive嘗試magic_quotes,在這種情況下顯示下面ive嘗試mysql_real_escape_string和來自$內容的文本將存儲在數據庫與換行符,他們不應該。

我錯過了什麼?感謝

下面這段代碼插入到數據庫和相關的值是$內容

<?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(); 
           } 


    ?> 
+0

「// ^^^這裏是問題^^^」 - 我不這麼認爲。你檢查了'$ _POST ['snipcontent']'和'$ content'的值嗎? – 2013-03-16 00:20:59

+0

您的mysql_real_escape_string不會執行任何操作,因爲您已使用mysqli進行連接。你應該在這裏得到一個錯誤。 – 2013-03-16 00:21:38

+0

是的,它包含代碼和文本,但是在不應有的地方存在換行符。例如http://www.hushmag.co.uk/code/a_Snip.php?snipid=22 – Derple 2013-03-16 00:25:17

回答

0
  1. mysql_real_escape_string不應該以任何方式與mysqli的使用
  2. thevertheless,它不應該是是問題
  3. 最有可能你的「解決方案」是搭配上的stripslashes取
  4. 所以,正確的解決辦法是
    • 打開魔術引號關閉
    • 和使用mysqli_real_escape_string
相關問題