2016-09-28 83 views
1

[我使用phpMyAdmin]PHP | MySQL的 - 不能插入文本中包含撇號

我要插入的長文這是一個城市或區域的大型描述。 它包含撇號和逗號,但插入時,逗號不是問題,但撇號是。

例如,

東枝的整個撣邦的行政首都。棲息在山頂上,它也是一個繁忙的貿易站, 和......

它將從用戶(類型的)在我的網站的文本區域的輸入。 所以它不能像我發現的其他例子一樣靜態定義。

當前一個
//php $name=$_REQUEST["name"]; // //in insert query => '.$name.',

試過像下面過,但沒有工作。

'".$name."', 

任何好主意,請!我們非常感謝您的幫助。謝謝!

回答

2

用反斜槓將引號退出。像'sumit \'s'一樣。

下面是一個例子功能,採用mysqli_real_escape_string:

<?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://www.w3schools.com/php/func_mysqli_real_escape_string.asp

在你的情況下,它應該是mysql_real_escape_string($name)

+0

請不要認爲OP使用**危險**和**不安全**'mysql_ *'功能,*總是詢問。* –

+0

你沒有錯。但也不要假定用戶肯定使用mysqli擴展名而不是mysql。 @RajdeepPaul –

+0

這就是爲什麼我說,*總是問* OP使用什麼驅動程序。庫MySQLi? PDO?誰知道。 –

1

您是否嘗試過逃跑的特殊字符?下面應該是有幫助的:

$name=mysqli_real_escape_string($connection, $name); 

我創建的)每個我需要的東西,從$_POST時間稱爲後(函數,我簡單的調用post('item_name');功能不是執行逃逸,返回安全字符串......有無數的問題和答案你的問題包括這一個:Properly Escaping with MySQLI | query over prepared statements

+1

以程序化的方式,['mysqli_real_escape_string()'](http://php.net/manual/en/mysqli.real -escape-string.php)函數有兩個參數,第一個是連接處理程序,第二個是要轉義的字符串。 –

+0

@RajdeepPaul良好的捕獲 - 我已經更新了我的答案+ upvoted。謝謝。 – salih0vicX

+0

值得一提的是[即使轉義字符串也不會阻止SQL注入](http://stackoverflow.com/questions/37218691/mysql-real-escape-string-solve-sql-injection-definitely)。 +1的鏈接順便說一句。 –