在Foreach中为我的getAll函数返回mysql结果集

时间:2011-11-05 13:13:33

标签: php mysql function foreach resultset

可能是一个基本的,但我写了一个函数,从后端的dbtable中选择所有。但是在前端,我希望将它与foreach一起使用,以便随时随地显示结果。

Array(
[0] => Array
    (
        [stockCatID] => 1
        [stockCatName] => Copper
        [stockParentCat] => 0
    )

[1] => Array
    (
        [stockCatID] => 2
        [stockCatName] => Zinc
        [stockParentCat] => 0
    )
)

当我将结果集发送到我的前端页面时,此数组显示出来。所以我基本上不能用它来播放:

<?php
$r = getAll("stockcategories");
foreach($r as $k=>$v) {
    echo ("<p><strong>$k</strong>: $v</p>");   
} 

使用上面的结果数组iu输出:

0 = Array1 = Array

补充:我不想从后端函数回显。

所以最后这是我的功能:

<?php
function getAll ($tableName,$orderBy="", $limit="") {
        $orderBy = $orderBy == "" ? $orderBy : (" ORDER BY =\"".$orderBy."\" "); 
        $limit = $limit == "" ? $limit : (" LIMIT =\"".$limit."\" ");
        $q  = mysql_query("SELECT * FROM $tableName $orderBy $limit");
        if (!$q) { die('Could not connect: ' . mysql_error());} else { $num=mysql_numrows($q); 
        if ($num != 0 ) { 
            while($r = mysql_fetch_assoc($q)) { 
                $rArray[] = $r;
            }
            mysql_free_result($q); 
            return $rArray; 
            } else { echo '<span class="notification n-error">No Record Found</span>'; return false; }        
    }
?>

感谢您的帮助。

4 个答案:

答案 0 :(得分:0)

正如您自己指出的那样,数组包含数组作为值。 $v是一个包含密钥stockCatIDstockCatNamestockParentCat的数组。尝试类似:

$r = getAll("stockcategories");
foreach($r as $record) {
    foreach($record as $k=>$v) {
        echo("<p><strong>$k</strong>: $v</p>");
    }
    echo("<hr/>");
}

答案 1 :(得分:0)

$rArray是一个二维数组,但您只能在一个维度上访问它。您需要嵌套的foreach循环。外部循环遍历返回的每一行,内部迭代每行中的列:

foreach ($r as $row) {
  foreach($row as $k=>$v) {
    echo ("<p><strong>$k</strong>: " . htmlspecialchars($v) . "</p>");   
  }
} 

更新一个迭代两个维度的函数:

function printResults($resultArray) {
    foreach ($resultArray as $row) {
      foreach($row as $k=>$v) {

        // Note sanitizing against XSS if this was user-input...
        echo ("<p><strong>$k</strong>: " . htmlspecialchars($v) . "</p>");   
      }
    } 

}

将其命名为:

$r = getAll("stockcategories");
printResults($r);

答案 2 :(得分:0)

<?php
$outer_array = getAll("stockcategories");
foreach($outer_array as $inner_array) {
    foreach($inner_array as $k => $v {
      echo "<p><strong>$k</strong>: $v</p>";
    }
} 

你有一个数组数组,你的循环只遍历外部数组。

答案 3 :(得分:0)

或者你可以在这样的循环中完成:

foreach($r as $row) {
    echo ("<p><strong>$row['stockCatName']</strong>: $row['whatever']</p>");   
} 

确实取决于你需要的输出。