无法将表情符号存储在mysql数据库中

时间:2018-10-21 17:23:39

标签: php mysql pdo

我的网站有问题。我想允许用户存储表情符号(当他们张贴东西时)。我正在使用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());


    }

0 个答案:

没有答案