Mysql真正的转义字符串不适用于插入获取语法错误的textarea撇号

时间:2017-06-04 03:47:45

标签: mysql mysqli mysql-real-escape-string apostrophe

每当我尝试插入包含撇号的数据时,我都会收到

  

mysql语法错误

textarea中的示例文本:当我尝试在数据库中插入时,I'm an alien会抛出语法错误。我正在使用real_escape_string但仍然无效。

查询摘要

$text=mysqli_real_escape_string($db,stripslashes(strip_tags(trim($_POST['text']))));

标记

<textarea name='text' placeholder="Type your message here... " value=''></textarea> 

2 个答案:

答案 0 :(得分:2)

只需使用参数化查询。然后你不必进行任何转义,撇号永远不会成为问题。

这很简单:

$text=trim($_POST['text']);

$stmt = $pdo->prepare("UPDATE table SET text=? WHERE user=?");
$stmt->execute([$text, $id]);

使用stripslashes()和striptags()也不是必需的。

您还可以使用Mysqli的参数执行预准备语句。但你应该使用PDO。

答案 1 :(得分:1)

我不得不使用参数化查询。这就是tricK:

 //get variables
 $id = $_POST['id'];
 $text=trim($_POST['text']);

 $sqlText= "UPDATE table SET text=? WHERE user=?";
 $updateText = $db->prepare($sqlText);
 $updateText->bind_param('si',$text, $id);
 $updateText->execute();