在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 12] => 1[3] => 10?正如我所看到的,它们以某种方式与原始行相链接,也许这些是它们的索引,但我应该如何去除它们?

最佳答案

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.

关于php - MySQL PHP:额外的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5708083/

10-09 08:25