2011-11-11 97 views
0

我使用PHP 5与MySQL:PHP数组访问

$line = mysql_fetch_array($result, MYSQL_ASSOC);

当我这样做,我可以看到查询打印结果:

foreach ($line as $data) 
    { 
     echo ($data . ", "); 
    } 

但如果我这样做这个代替:

echo ($line[0] . " " . $line[1] . " " . $line[2]);

我什么也没看到。此外,我不能指定从$线的值:

$values[] = $line[0]; //失败 - 不分配任何

为什么?我该怎么做呢?

+0

当你正在开发,打开用'的error_reporting所有的错误一个索引号(E_ALL)'。然后你会看到一些关于未定义数组索引的E_NOTICE级错误 – Phil

+0

mysql查询的结果不是0索引数组,而是键是数据库表的culomn名称 – Qchmqs

回答

5

您已提名为仅将记录检索为关联条目(MYSQL_ASSOC)。这意味着您的$line数组不会包含数字索引。如果您只需要数值数组,请使用mysql_fetch_row()

联想只,mysql_fetch_assoc()

您也可以检索使用mysql_fetch_array($result, MYSQL_BOTH)但是这会给你复制你的foreach循环条目的混合数字和关联数组。

0

你告诉MySQL你想将行作为一个数组取出,这意味着$ line不是一个0索引数组,它是一个关联数组,这意味着数组的键是表的列名s)你从中选择。

var_dump($line); // Will display the keys 
0

尝试:

echo ($line["id"] . " " . $line["id"] . " " . $line["id"]); 

所以不是使用像[0]您使用相应的列名

+1

这只能通过使用['mysql_fetch_object( )'](http://php.net/manual/en/function.mysql-fetch-object.php)或通过将关联数组转换为'(object)' – Phil

+0

你现在愚蠢的我有点困惑 – 2011-11-11 01:29:41