记录没有在mysql中显示,但是我可以在php中通过id获得它

pxq42qpu  于 2021-06-25  发布在  Mysql
关注(0)|答案(3)|浏览(334)

所以我的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 |
 +----+-------------+------------------+--------------+------------------------------------+

如您所见,缺少id为8的记录,在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。

cygmwpex

cygmwpex1#

您需要确保您的客户机也在utf8中,否则您可能会遇到这种奇怪的显示故障。
要在连接期间更改字符集,请执行 SET NAMES utf8;

fsi0uk1n

fsi0uk1n2#

在我的例子中,问题是我在连接到数据库时在php中设置的字符集。所以解决办法是

mysqli->set_charset("utf8");

在我连接到数据库的函数中。
http://php.net/manual/en/mysqli.set-charset.php

gopyfrb3

gopyfrb33#

尝试使用此选项启动您的客户机 --default-character-set=utf8 .
您可以在这里查看更多信息:10.1.4连接字符集和排序规则
也可以在中更改此行为 [mysqld] 中的节 my.cnf 并添加两个字符串:

collation_server=utf8_unicode_ci
character_set_server=utf8

您还可以添加

skip-character-set-client-handshake

在数据库中强制使用utf8编码。

相关问题