尝试将表情符号传递给使用utf8mb4编码的数据库时,字符串值不正确

时间:2019-03-01 15:13:18

标签: php mysql pdo mysql-8.0

我有一个具有字符集utf8mb4和排序规则utf8mb4-bin的数据库。我要插入的表和列也具有此类属性。我的PHP文件保存在UTF-8中(没有BOM)。我用于PDO连接的$dsn变量如下所示:$dsn = 'mysql:host=127.0.0.1;dbname=vk_comments;port=3306;charset=utf8mb4;connect_timeout=15'。顺便说一下,我使用的是PHP 7.2。

但是MySQL一直说它得到了Incorrect string value。如您所见,我到处都设置了正确的字符集。还有什么问题?

其他信息

输入前的示例值: 我从MySQL得到的确切错误:SQLSTATE[HY000]: General error: 1366 Incorrect string value: \u0027\\xF0\\x9F\\x98\\x8A\u0027 for column \u0027comment_text\u0027 at row 1

1 个答案:

答案 0 :(得分:0)

$this->dbh = new PDO($dsn, $user, $password);

之后

我必须添加

$this->dbh->exec("set names utf8mb4");

只有这个有效。