2011-08-16 4 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

참고 : 실제로 문제가 결과 배열을 반복, 따라서 라벨, 및/또는 HTML PHP를해야하지만, 어디 보자로 생각 :

프리젠 테이션에서 가져 오는 중 오류 기록을 분리하는 것이 좋은 그것의, 이 같은 예를 들어 :

$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)

을 만들 것입니다, 당신은 그 배열을 반복하고 출력 HTML을 생성 foreach 문을 사용할 수 있습니다. 내가 이해 한 바에 따르면, 행당 4 개의 셀과 셀당 하나의 카드 이름을 가진 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>'; 
관련 문제