2010-12-15 52 views
-1

我在PHP中發佈動態生成的文本框的數據。當我使用後的real_escape_string()數據,即:php real_escape_string

$ingredient = mysql_real_escape_string($_POST['ingredient']); 

...它沒有發佈從文本數據,我用簡單的方法$_POST[''];即:

$ingredient = $_POST['ingredient']; 

...它給我的錯誤當我在我的文本中使用單引號(')時。

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法附近「S」,「fgad」使用手冊「 55」)」在第2行

,這是我的舊文章
我解決本地問題通過啓用magic_quotes_gpc = On,但是當上傳到我的服務器上它不會再工作,所以我如何打開服務器上的魔術引號。

+0

對不起,什麼?使用'mysql_real_escape'確切的問題是什麼? – deceze 2010-12-15 07:14:43

+0

沒有錯誤顯示,當我檢查數據庫表時沒有記錄插入 – hunter 2010-12-15 07:17:28

+3

檢查你的'mysql_query'調用的返回值。如果它是錯誤的,你可以通過打印出mysql_error的返回值來找出原因。 – 2010-12-15 07:37:35

回答

-1

我想這可能與「魔術」引號功能 - 看到這個網頁的詳細說明:Magic Strings & SQL

基本上,因爲與SQL注入攻擊的問題,他們事先逃出後一定用引號中的字符串PHP版本(我認爲它是5.0,但我可能是錯的)。所以最終的結果是,現在你的軟件必須檢查軟件版本,並且根據字符串是否已經被轉義行爲有所不同。

+1

魔術引號在4.0(2001年,大約十年前)中加入,並在至少2到3年前正式棄用。 – 2010-12-15 07:35:54

+0

感謝您的更正。 :)時間流逝太快了! – Mehrdad 2010-12-15 08:50:14

+0

但它不適用於我的服務器.... !!! – hunter 2010-12-15 08:56:58

1

你有開放的數據庫連接嗎? mysql_real_escape_string需要一個MySQL服務器才能正常工作。

+0

ofcourse它有因爲當我通過簡單的$ _POST添加['']它添加記錄到數據庫 – hunter 2010-12-15 07:23:08

+1

@hunter在您調用mysql_real_escape_string **時,您需要打開連接**。如果您之後打開連接,則不起作用。 – deceze 2010-12-15 07:26:24

+0

我在我的頁面上有一個數據庫連接 – hunter 2010-12-15 07:30:00

0

你可能想嘗試

$ingredient = $_POST['ingredient']; 

$ingredient = mysql_real_escape_string($ingredient); 
0
<?php 
$con=mysqli_connect("localhost","my_user","my_password","my_db"); 

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

// escape variables for security 
$firstname = mysqli_real_escape_string($con, $_POST['firstname']); 
$lastname = mysqli_real_escape_string($con, $_POST['lastname']); 
$age = mysqli_real_escape_string($con, $_POST['age']); 

$sql="INSERT INTO Persons (FirstName, LastName, Age) 
VALUES ('$firstname', '$lastname', '$age')"; 

if (!mysqli_query($con,$sql)) { 
    die('Error: ' . mysqli_error($con)); 
} 
echo "1 record added"; 

mysqli_close($con); 
?> 

必須使用連接數據庫看到 http://php.net/manual/en/mysqli.real-escape-string.php

可以使用也
字符串mysqli的:: real_escape_string(字符串$ escapestr)

相關問題