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)
您是否尝试过逃跑的特殊字符?下面应该是有帮助的:
$name=mysqli_real_escape_string($connection, $name);
我创建的)每个我需要的东西,从$_POST
时间称为后(函数,我简单的调用post('item_name');
功能不是执行逃逸,返回安全字符串......有无数的问题和答案你的问题包括这一个:Properly Escaping with MySQLI | query over prepared statements
以程序化的方式,['mysqli_real_escape_string()'](http://php.net/manual/en/mysqli.real -escape-string.php)函数有两个参数,第一个是连接处理程序,第二个是要转义的字符串。 –
@RajdeepPaul良好的捕获 - 我已经更新了我的答案+ upvoted。谢谢。 – salih0vicX
值得一提的是[即使转义字符串也不会阻止SQL注入](http://stackoverflow.com/questions/37218691/mysql-real-escape-string-solve-sql-injection-definitely)。 +1的链接顺便说一句。 –
请不要认为OP使用**危险**和**不安全**'mysql_ *'功能,*总是询问。* –
你没有错。但也不要假定用户肯定使用mysqli扩展名而不是mysql。 @RajdeepPaul –
这就是为什么我说,*总是问* OP使用什么驱动程序。库MySQLi? PDO?谁知道。 –