将UTF-8字符串插入MySQL表

时间:2014-02-12 23:47:09

标签: php mysql utf-8 insert

我正在努力从PHP脚本中将UTF-8编码的字符串插入到MySQL表中:

该表设置为整理" utf8_unicode_ci",该字段是文本字段,也是整理" utf8_unicode_ci"。该字符串正在从另一个站点读入,如下所示:

$str = "Bonka bдver, е hцra va man bara ta't en fika.";

...... INSERT之前一切都很好看。如果我 echo($ str); ,我会看到unicode字符:

Bonka bдver, е hцra va man bara ta't en fika.

...但是当我尝试将这个字符串INSERT到MySQL表中时,就像这样:

$sql = "INSERT INTO mytable (id, mystring)
        VALUES ('','".addslashes($str)."');";
if ( !mysqli_query( $mysqli, $sql ) ) {
    printf("Error: %s\n", mysqli_error( $mysqli ) );
    die();
}

...写入数据库的是:

Bonka bдver, е hцra va man bara ta't en fika.

我非常确定桌子没问题,(因为我尝试通过PhpMyAdmin插入相同的字符串并且工作正常),而且我非常确定源字符串是否正常,(因为我可以输出它通过echo()和它在unicode中),所以我猜问题必须是我插入它的方式?我做错了什么?

PS。我尝试了没有在$ str上的addslashes(),但后来我得到了错误:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 't en fika.

感谢您的期待!

1 个答案:

答案 0 :(得分:1)

使用mysqli_set_charset将连接上的字符集设置为UTF-8。