在MySQL中,表test
看起来像这样:
id name lft rgt
1 Folder 1 1 10
2 Child 1 2 3
3 Child 2 4 7
4 Child 1 5 6
5 Child 3 8 9
当我这样做时:
$results = mysql_query("SELETCT * FROM test ORDER BY id");
$fetch = mysql_fetch_array($results);
echo "<pre>";
echo print_r($fetch);
echo "</pre>;
结果是:
[0] => 1
[id] => 1
[1] => Folder 1
[name] => Folder 1
[2] => 1
[lft] => 1
[3] => 10
[rgt] => 10
我的问题是为什么有[0] => 1
,[1] => Folder 1
,2] => 1
和[3] => 10
?我看到它们与原始行有某种联系,也许这些是它们的索引,但我该如何摆脱它们呢?
答案 0 :(得分:3)
这就是mysql_fetch_array的工作原理:您可以使用0到3之间的索引,或者您可以使用该名称。
如果您只想使用可以使用的名称:mysql_fetch_assoc
答案 1 :(得分:2)
mysql_fetch_array()
有三种检索数据的模式。默认值为MYSQL_BOTH
,这是您所看到的 - 组合散列+数组结构。其他两种模式是仅数组(MYSQL_NUM
)和仅哈希(MYSQL_ASSOC
)。
换句话说,这些在获取模式中是直接的1:1对应关系:
mysql_fetch_array($results, MYSQL_NUM) === mysql_fetch_row($results)
mysql_fetch_array($results, MYSQL_ASSOC) === mysql_fetch_assoc($results)
mysql_fetch_array($results) === mysql_fetch_array($results, MYSQL_BOTH) // default mode.
答案 2 :(得分:0)
命令mysql_fetch_array将同时提取关联数组和数字数组,除非您指定所需的数组。 相反,请尝试使用:
$fetch = mysql_fetch_assoc($results);