我有一个从NoSQL数据库获取数据的函数,如果它不可用,那么它会进入MySQL数据库来获取数据,但问题是,该函数将数据放入数组两次而且我无法弄清楚原因。
预期结果
array(2) {
["id"]=> string(2) "30"
["username"]=> string(8) "Username" }
实际结果
array(4) {
[0]=> string(2) "30"
["id"]=> string(2) "30"
[1]=> string(8) "Username"
["username"]=> string(8) "Username" }
代码
删除与问题无关的代码,并替换为伪代码注释。
$Connection = $this->Connect("MySQLi");
$Data = MySQLi_Fetch_Array(
MySQLi_Query($Connection["MySQLi"], $Options["Query"])
);
echo "Got array (MySQLi).";
值得注意的是字符串“Got array(MySQLi)”。只出现一次。
答案 0 :(得分:2)
MySQLi_Fetch_Array
在一个数组中获取重复数据 - 同时使用数字和关联索引
使用mysqli_fetch_assoc
代替只有关联
答案 1 :(得分:1)
mysqli_fetch_array()使用参数resulttype
,默认情况下设置为MYSQLI_BOTH
。
通过使用MYSQLI_ASSOC常量,此函数的行为与mysqli_fetch_assoc()相同,而MYSQLI_NUM的行为与mysqli_fetch_row()函数相同。 最终选项MYSQLI_BOTH将创建一个包含两者属性的数组。
mysqli_fetch_assoc
获取关联数组,而mysqli_fetch_row
获取带有数字索引的数组。
mysqli_fetch_array
的 MYSQLI_BOTH
将获取同一数组中的命名(关联)索引和数字索引。