2014-09-24 47 views
0

有了这个作为我的基本代码:MYSQL + PHP:数组处理?

$sql = "SELECT * FROM `memberlist` WHERE Active = 1"; 

$res = mysql_query($sql); 

if (mysql_num_rows($res) > 0) { 
    while ($temp = mysql_fetch_array($res, MYSQL_BOTH)) { 

我想这样的结果出现的情况是:

在做,而:

  1. 获得的第一个记录,做一些事情。
  2. 获取第一条记录,做一些事情。获取第二个记录,做一些事情。
  3. 获取第一条记录,做一些事情。获取第二个记录,做一些事情。获得第三条记录,做点什么。
  4. 获取第一条记录,做一些事情。获取第二个记录,做一些事情。获得第三条记录,做点什么。获得第四个记录,做一些事情。

...只是继续前进,直到所有的记录都被处理完毕,然后重新开始,然后继续重复整个过程,直到满意为止。

这是否太复杂?

如果我需要澄清,请让我知道...

我会很感激的帮助!

谢谢!

+3

mysql_ *功能被取消,并将从PHP中删除。你应该考虑切换到[mysqli](http://php.net/manual/en/book.mysqli.php)或[PDO](http://php.net/manual/en/ref.pdo-mysql .PHP)。这里有一些帮助[选择一个](http://php.net/manual/en/mysqlinfo.api.choosing.php)。 – Muur 2014-09-24 15:43:48

+0

你需要澄清。为什么不一起检索所有记录并在他们的途中跟他们做些什么? – Kleskowy 2014-09-24 15:49:08

+0

@Kleskowy:mysql_fetch_array一次检索所有记录。我想要他们处理的方式是我在文中描述的... – 2014-09-24 16:02:43

回答

0

正如您所问 - 使用此代码从数据库中检索所有行。请注意,您可以在检索时主管每行数据(我在代码中添加了一条评论,以便您知道该在哪里执行该操作),您无需等到检索完所有数据后再进行操作。

此外,请注意,我更改了mysql_ *(depracated)至mysqli_ *

$sql = "SELECT * FROM `memberlist` WHERE Active = 1"; 
$dbLink = mysqli_connect(); // host, username etc go here - if you haven't connected yet 
$res = mysqli_query($dbLink, $sql); 

$rowResults = array(); 
if (mysqli_num_rows($res) > 0) { 

    while ($temp = mysqli_fetch_array($res, MYSQL_BOTH)) { 

    $dataToProcess = $temp; //store just not to mess with retrieved row data 

    //processData, for example - trim title: 
    $dataToProcess['title'] = trim($dataToProcess['title']); 

    $rowResults[] = $dataToProcess ; // add it to results array 

    } 
} 

var_dump($rowResults); //you now have all the processed results here 
0

这是它。外环增加了内环循环的范围。

$sql = "SELECT * FROM `memberlist` WHERE Active = 1"; 

$res = mysql_query($sql); 

if (mysql_num_rows($res) > 0) { 
    $arr = mysql_fetch_array($res, MYSQL_BOTH); 
    for($i = 0; $i < count($arr); $i++) { 
    for($j = 0; $j <= $i; $j++) { 
     var_dump($arr[$j]); // 'do somethin' here 
    } 
    } 
}