PHP/MySQL : Returning unknown columns

标签 php mysql arrays database

我有这个脚本返回一个数组,其中包含 MySQL 数据库表中的一行值:

$player_login_request = $db->query('SELECT * FROM Players');
while ($player_login = $player_login_request->fetch())
{
    print_r($player_login);
}

这是该脚本的输出:

Array ( [id] => 2 [0] => 2 [name] => tom [1] => tom [experience] => 20 [2] => 20 [strength] => 30 [3] => 30 [damages] => 10 [4] => 10 )

条目行似乎加倍了,其他一些列以一些数字命名。如果您查看我的表的结构,会发现列 [0], [1], ..., [4] 包含与前面的列相同的值 (idname 等),但它们不应该在那里。

如果您有兴趣,这里是表格的结构:

+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| id         | int(11)     | NO   | PRI | NULL    | auto_increment |
| name       | varchar(50) | YES  |     | NULL    |                |
| experience | int(11)     | NO   |     | NULL    |                |
| strength   | int(11)     | NO   |     | NULL    |                |
| damages    | int(11)     | NO   |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

如您所见,当我在命令行中执行SELECT * FROM Players 时,不会显示这些列!

我不明白其背后的逻辑。我该如何摆脱它?
我希望有人能提供帮助:P

提前谢谢您!

最佳答案

->fetch() 返回一个包含数字键和关联键的“混合”数组。

在MySQLi中,要仅返回关联数组,您必须使用->fetch_assoc(),要仅返回数字数组,您必须使用->fetch_row()

在 PDO 中,要仅返回关联数组,您必须使用 ->fetch(PDO::FETCH_ASSOC),要仅返回数值数组,您必须使用 ->fetch(PDO: :FETCH_NUM)

编辑:

在 PDO 中,您可以通过以下方式设置默认的获取模式:

$connection = new PDO( ... );
$connection->setAttribute( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC );

四处搜索,我没有找到永久设置默认获取模式的可能性。

我不知道MySQLi是否允许设置默认的获取模式。

关于PHP/MySQL : Returning unknown columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35616182/

相关文章:

javascript - 在模式框中打开页面

MySQL LEFT JOIN 与 DISTINCT 或 LIMIT。只需要 LEFT JOIN 一个值

arrays - PostgreSQL 选择一个数组中不存在于另一个数组中的项目

java - 为整数数组创建自定义排序?

php - 如何将新的索引和值推送到 php 数组?

java - PHP 中等效的 AES 128 位

MySQLdump 正在执行,但实际上并没有工作

javascript - 将字符串修改为数组

php - 为什么我不能在这个 WordPress 主题中添加 CSS 样式?

mysql - 删除 mysql 符号链接(symbolic link),因为它没有指向任何内容