MySQL PHP:额外的行

时间:2011-04-18 19:49:58

标签: php mysql

在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?我看到它们与原始行有某种联系,也许这些是它们的索引,但我该如何摆脱它们呢?

3 个答案:

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