我正在尝试使用 JavaScript/Ajax 和 PHP 的组合将字符串插入 MySQL 表。在使用 Ajax 将所需的 (JavaScript) 字符串传递给 PHP 脚本后,我尝试使用 PHP 将其插入到表中。
PHP 脚本正在运行,但是一旦遇到单引号 ('),插入就会在该点停止。我尝试过以各种组合使用 mysql_real_escape_string()、addslashes()、htmlentities() 和 str_replace(),尝试打开和关闭魔术引号,无论如何,单引号都无法处理。我只想保留它们或让它们正确转义,但没有什么对我有用 - 字符串本身来自推文,所以我想知道是否可能是一些编码冲突导致了这种情况?任何有关如何克服这一点的建议将不胜感激。
例如,为了更好地说明,如果我将此字符串传递给 PHP 脚本:
答应我你不会投票
然后在使用上述任何方法清理字符串并插入 MySQL 表后,它在 MySQL 表中将始终如下所示:
答应我你赢了
这是我的php代码:
include("dbconnect.php"); //connect to DB
$tweet = mysql_real_escape_string($_POST['tweet']); //escape the string
if($tweet != '') { //check it's not empty
$query = "insert into Tory (Content) values('$tweet')"; //insert statement
$link = mysql_query($query);
if (!$link) {
echo "3";
die($result);
}
echo "<p>".$tweet."</p>"; //for Ajax callback
}
这是 Javascript/Ajax 代码:
$.ajax({
type: 'POST',
url: 'buildTable.php', //previous php code
data: "tweet=" + content, //content is the tweet string as javascript var
success: function(thetweet) {
$(document.body).append(thetweet);
}
});
编辑:感谢您提供的所有评论和建议。我使用的一个临时解决方案是在将字符串传递给 PHP 脚本之前,在客户端用反斜杠替换单引号的所有实例。然后在 PHP 或 JavaScript 中检索时将其切换回单引号。