mysqli将简单查询作为对象返回 - 为什么?

时间:2011-08-16 20:46:58

标签: php foreach

我有一个简单的问题,理解如何使用mysqli从简单查询中解析stdObject返回...我尝试了几种不同的方法将stdObject转换为数组,并且只使用fetch_object(),如下所示:

$cart_q = "SELECT card_name FROM products WHERE product_cat = 'HPC' LIMIT 12";
$result = $mysqli->query($cart_q);

echo "<table>";
$i = 0;
while ($products = $result->fetch_object()) {
   if($i == 0)
      echo "<tr>";
      echo "<td>". $products->card_name ."</td>";
      $i++;
      if($i == 3) {
echo "</tr>";
$i=0;
     }
 }
 echo "<table>"; 

我已经完成了对象的print_r并获得了一个关联数组,但是将其分解为在页面中显示还没有工作......有什么想法吗?

1 个答案:

答案 0 :(得分:0)

注意:我实际上认为你的问题是迭代结果数组,因此标签应该是php,或/和HTML,但让我们看看:

将回溯记录与演示文稿分开通常很好,例如:

$mysqli = new MySQLi($db_host, $db_user, $db_pass, $db_name);
$cart_q = "SELECT card_name FROM products WHERE product_cat = 'HPC' LIMIT 12";
$result = $mysqli->query($cart_q) or die($mysqli->error);

$card_names = array();
while ( $row = $result->fetch_assoc() ){
    $card_names[] = $row['card_name'];
}

上面会创建数组$card_names => array('card_name1', 'card_name2' ... etc)

现在,您可以使用foreach迭代该数组并创建输出HTML。根据我的理解,你想创建HTML表格,每行4个单元格,每个单元格一个卡片名称。

echo '<table><tr>';

$i = 1;
foreach ( $card_names as $name ){
    echo "<td>$name</td>";

    if ( $i % 4 == 0) echo '</tr><tr>';

    $i++;
}
($i - 1) % 4 == 0 ? echo '</tr></table>'; : echo '</table>';