每当我尝试插入包含撇号的数据时,我都会收到
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>
答案 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();