记录不会显示在MySQL中,但我可以通过PHP中的ID获取它

时间:2018-01-12 10:43:12

标签: php mysql

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

3 个答案:

答案 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");

在我连接数据库的功能中。

http://php.net/manual/en/mysqli.set-charset.php

答案 2 :(得分:0)

您需要确保您的客户端也是UTF8,否则您可能会遇到这种奇怪的显示故障。

要在连接期间更改字符集,请执行SET NAMES utf8;