将所有选定的mysql行放入一个数组中

23

我想知道在php中有没有一个函数可以让我将所有选定的数据放到数组里。目前我正在使用mysql_fetch_array,但是根据手册所述,该函数无法获取表中的每条记录。

$result = mysql_query("SELECT * FROM $tableName");            
$array = mysql_fetch_array($result);

  echo json_encode($array);

2
那些 mysql_... 函数已经过时且不安全。你应该使用 mysqli 或者更好的 PDOs - http://php.net/manual/zh/book.mysqli.php, http://php.net/manual/zh/book.pdo.php - Raekye
正如Raeki所说,mysql已经相当老了,但除此之外,如果你仍然想要循环遍历结果,可以使用以下代码实现: $allRows = array(); while($row = mysql_fetch_array($result) {$allRows[] = $row } - toske
2
请勿在新代码中使用mysql_*函数。它们已不再维护,社区已经开始弃用过程。看到红框了吗?相反,您应该学习有关预处理语句的知识,并使用PDOMySQLi。如果您无法决定,本文将帮助您选择。如果您想学习,这里有一个很好的PDO教程 - Madara's Ghost
如果你要复制粘贴,请注意toske需要在while循环中添加一个闭合的$allRows = array(); while($row = mysql_fetch_array($result)) {$allRows[] = $row } - Andrew Samuelsen
6个回答

67

我建议使用MySQLi或MySQL PDO来提高性能和安全性,但是为了回答这个问题:

while($row = mysql_fetch_assoc($result)){
     $json[] = $row;
}

echo json_encode($json);

如果你改用MySQLi,你可以这样做:

$query = "SELECT * FROM table";
$result = mysqli_query($db, $query);

$json = mysqli_fetch_all ($result, MYSQLI_ASSOC);
echo json_encode($json );

3
谢谢,经过这么多年,这个答案终于让我自由了。 - Zasha
1
很高兴在将近10年后,这个答案仍然有价值! - Mike Mackintosh
2
直接解决方案..! :) - Rhak Kahr

11
1. 循环遍历结果,并将每个结果放入一个数组中。 2. 使用 mysqli_fetch_all() 一次性获取所有结果。

8

您可以尝试以下方法:

$rows = array();
while($row = mysql_fetch_array($result)){
  array_push($rows, $row);
}
echo json_encode($rows);

1

这个方法也非常好,你可以试一下。

 try {
       while ($row=mysqli_fetch_array($res)) {
        array_push($row...);           
    }    
} catch (Exception $e) {
     print($e->getMessage());
}

1
$name=array(); 
while($result=mysql_fetch_array($res)) {
    $name[]=array('Id'=>$result['id']); 
    // here you want to fetch all 
    // records from table like this. 
    // then you should get the array 
    // from all rows into one array 
}

0

你可以调用mysql_fetch_array()函数no_of_row次。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接