PHP | MySQL的 - 不能插入文本中包含撇号

问题描述:

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

我要插入的长文这是一个城市或区域的大型描述。 它包含撇号和逗号,但插入时,逗号不是问题,但撇号是。

例如,

东枝的整个掸邦的行政首都。栖息在山顶上,它也是一个繁忙的贸易站, 和......

它将从用户(类型的)在我的网站的文本区域的输入。 所以它不能像我发现的其他例子一样静态定义。

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

试过像下面过,但没有工作。

'".$name."', 

任何好主意,请!我们非常感谢您的帮助。谢谢!

用反斜杠将引号退出。像'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?谁知道。 –

您是否尝试过逃跑的特殊字符?下面应该是有帮助的:

$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://*.com/questions/37218691/mysql-real-escape-string-solve-sql-injection-definitely)。 +1的链接顺便说一句。 –