所以我的MySQL数据库和PHP有一个奇怪的情况。
当我尝试获取MySQL中的所有记录时,我得到如下结果:
mysql> select * from adresatai;
+----+-------------+------------------+--------------+-------------------------
-----------+
| ID | name | surname | mobile | email |
+----+-------------+------------------+--------------+------------------------------------+
| 6 | ex1 | ex2 | 123456789 | email@email.com |
| 7 | ex3 | ex4 | 987654321 | email@emailo.com ||
| 9 | ex5 | ex6 | +123456 | email@emaillll.com |
+----+-------------+------------------+--------------+------------------------------------+
如您所见,缺少8个ID的记录,而在7个记录中则有一个双| (||)。
但是当我尝试通过id检索时,我会得到类似的结果:
mysql> select * from adresatai WHERE ID=8;
+----+--------+------------------+--------------+--------------------------------+
| ID | name | surname | mobile | email |
+----+--------+-----------ius | 123456789 | good@email.com |+
+----+--------+------------------+--------------+--------------------------------+
1 row in set (0.00 sec)
当我不在网站上使用UTF8字符时,我更新了记录,但是当我尝试添加例子时,它就像这样。但我有更多的条目,其中有Ž,但它们很好。
表设置为utf8。
答案 0 :(得分:2)
尝试使用此选项--default-character-set=utf8
启动客户端。
您可以在此处查看更多相关信息: 10.1.4 Connection Character Sets and Collations
您还可以在[mysqld]
的{{1}}部分中更改此行为,并添加两个字符串:
my.cnf
您也可以添加
collation_server=utf8_unicode_ci
character_set_server=utf8
在db。中强制使用utf8编码。
答案 1 :(得分:1)
在我的情况下,问题在于我在连接到数据库时在PHP中设置的字符集。所以解决方案是添加
mysqli->set_charset("utf8");
在我连接数据库的功能中。
答案 2 :(得分:0)
您需要确保您的客户端也是UTF8,否则您可能会遇到这种奇怪的显示故障。
要在连接期间更改字符集,请执行SET NAMES utf8;