我的网站有问题。我想允许用户存储表情符号(当他们张贴东西时)。我正在使用SQL数据库,并尝试了许多在网络上找到的解决方案(utf8mb4而不是utf8等)。
真正奇怪的是,它可以正确存储心脏表情符号,但只能存储此表情符号。当文本中包含的表情符号不是心脏表情符号时,数据库中什么都没有,所以我有一个例外:Result: SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: '\xF0\x9F\x91\x8D\xF0\x9F...' for column 'post' at row 1string(12) "PDOException" string(127) "SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: '\xF0\x9F\x91\x8D\xF0\x9F...' for column 'post' at row 1"
这是我的代码:
首先,存在一个内容可编辑的div,用户可以在其中编写其帖子。下面的代码是要得到他写的东西
$('#submit').click(function() {
var post = $('#contentbox').text();
post = $.trim(post);
if (post == "") {
alert("You must write something");
} else {
$('#textinput').val(post);
}
});
然后用php将其存储在数据库中
<?php
function verifyInput($var)
{
$var = trim($var);
$var = stripslashes($var);
$var = htmlspecialchars($var);
return $var;
}
$post= verifyInput($_POST['post']);
id= $_SESSION['USERID'];
$date = time();
try
{
$query = $db->prepare("INSERT INTO posts (id, post, date) values(?, ?, ?)");
$query->execute(array($id, $post, $date));
} catch (PDOException $e) {
echo "\nResult: " . $e->getMessage();
var_dump(get_class($e));
var_dump($e->getMessage());
}