2011-08-16 14 views
1

私は、mysqliを使って単純なクエリからstdObjectの戻り値を解析する方法を理解している簡単な問題を抱えています... stdObjectを配列に変換する方法と、fetch_object()を使用する方法を試しました。mysqliはオブジェクトとして単純なクエリを返します - なぜですか?

$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を実行し、連想配列を取得しましたが、ページ内で表示するように分割しました。まだアイデアはありませんか?

+0

追加するには、fetch_array()とfetch_row()の両方を使用してみましたが、その場合でも各レコードの配列が取得されます。私は定期的な配列を返すポイントに到達しようとしています:[0] => blah、[1] => blablaなど... – shotdsherrif

答えて

0

注:プレゼンテーションからretrivingレコードを分離することは通常は良い

その、私は実際にこのようにラベルは、PHP、または/およびHTMLであってもよいが、見てみましょうはずです、あなたの問題は結果の配列を反復処理していると思いますたとえば、次のように:上記は今、アレイ$card_names => array('card_name1', 'card_name2' ... etc)

を作成します

$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']; 
} 

、あなたはその配列を反復処理し、出力HTMLを作成するためのforeachを使用することができます。私が理解したところでは、1行に4つのセルと1つのセルに1つのカード名を持つHTMLテーブルを作成したいと思っています。

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>'; 
関連する問題