2013-10-12 154 views
0

我不熟悉mysqli_fetch_array,似乎无法弄清楚这一点。我有以下代码:与mysqli_fetch_array混淆

function select_fetch_row ($arg1, $arg2) { 
    $con = new mysqli(/* ... */); 
    $query = "SELECT $arg1 FROM $arg2"; 
    $select = mysqli_query($con, $query); 
    while($row = mysqli_fetch_array($select, MYSQLI_NUM)){ 
     echo $row[0]; 
    } 

} 

select_fetch_row(/* parameters*/); 

但是我不理解它应该做什么。我期望获得一个数组,其中每个键都对应于表中的一行,但是当输出我的代码时,不是只回显第一行的值($row[0]),而是回显列的所有值。有人可以阐明这个功能如何真正起作用吗?

+0

你发送任何参数,你的函数调用时?似乎并非如此。需要这些参数才能正确构建查询 –

+0

请不要**使用字符串连接来组合查询。使用['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)方法。 – tadman

+0

@Hanky웃Panky我忘了在上面的例子中添加它们,但在我的代码中我做到了。将在上面编辑,谢谢指出。 – tmnol

回答

1
while($row = mysqli_fetch_array($select, MYSQLI_NUM)){ 
     echo $row[0]; 
    } 

你取行一个接一个,在单个阵列中不。因此,每个$ row变量在表中都有一行,每个键都包含一个列值。所以,当你回显$ row [0]时,你显示了你所返回行的第一列。

如果将参数MYSQLI_NUM更改为MYSQLI_ASSOC,则会更好地了解发生了什么(数组键将包含列名称而不是整数)。

如果您想要一次性提取所有行,则可以使用mysqli_fetch_all代替,这将为您提供一个大数组,每个键包含一行。

http://www.php.net/manual/en/mysqli-result.fetch-array.php

http://www.php.net/manual/en/mysqli-result.fetch-all.php

+0

帮了很多,谢谢! – tmnol