sql sorgusunda dizi kullanarak

1 Cevap php

Ben bir üst kategori altındaki tüm kategoriler kapmak şu var:

<?php
$childrows = array();
$result2 = mysql_query("SELECT * FROM categories WHERE category_parent_id='$cid'"); while
($row = mysql_fetch_array($result2)){
$childrows [] = $row['category_id'];
print_r($childrows); }
?>

Bu döndürür:

Array ( [0] => 47 ) Array ( [0] => 47 [1] => 48 ) Array ( [0] => 47 [1] => 48 [2] => 63 ) Array ( [0] => 47 [1] => 48 [2] => 63 [3] => 64 ) Array ( [0] => 47 [1] => 48 [2] => 63 [3] => 64 [4] => 68 ) Array ( [0] => 47 [1] => 48 [2] => 63 [3] => 64 [4] => 68 [5] => 69 )

Olan sorun im ben ürünler tablosundan dizide saklanan kategoride (category_id) kapsamındaki ürünlerin sayısını (product_id) saymak gerekir, bir sonraki aşamasıdır.

Bir yolu olmalı!?

Thanks for looking. B.

Tam kodu:

    <?php
    if ($num_rows == 0) {
$result2 = mysql_query("SELECT * FROM categories WHERE category_parent_id='$cid'");
while ($row = mysql_fetch_array($result2)){
$childrows [] = $row['category_id'];
}
$category_string = implode(",",$childrows);
$result3 = mysql_query("SELECT   category_id, COUNT(product_id) 
                        FROM     products                         
                        WHERE category_id IN ($in_string)");
$result3 = mysql_fetch_array($result3);
$result3 = $result3[1];
echo $result3;
}
else {
echo $num_rows;
}
    ?>

ama bu sadece reurns:

Notice: Undefined variable: hattına 31 (WHERE category_id IN ($ in_string) ") üzerine in_string ;)

Warning: mysql_fetch_array (): Verilen argüman hattı 32 geçerli MySQL result resource ($ result3 = mysql_fetch_array ($ result3) değil ;)

1 Cevap

$ Cid güvenilmeyen girişi ise her şeyden önce, SQL enjeksiyon sakının, en az ($ cid) mysql_real_escape_string gerekir (bir kullanıcıdan girdi.)

Sizin soru bana özellikle belli değil, ama sadece dizi verilen kategori başına ürün miktarını almak ikinci bir sorgu yapın, bunu şöyle yapabilirsiniz:

/* After obtaining $childrows */
$category_string = implode(",",$childrows);
$result3 = mysql_query("SELECT COUNT(product_id) FROM products 
                        WHERE category_id IN ($category_string)");

$ Result3 Tüm ürünlerin sayısını temsil tek bir numara recordset kolu içerecek $ childrows dizisindeki kategoriye ait onlar vardır her kategori için bir kez sayılır