2009-04-20 11 views
0

私はさまざまなオークションのテーブルを持っています。各レコードにはユーザー名とカテゴリがあります。おそらく、同じユーザー名とカテゴリを持つ複数のレコードが存在します。カテゴリには4つの異なるタイプがあります。変数に動的に名前を付ける?

以下の準備されたクエリでは、2つ目のバインドされたパラメータが4つのカテゴリを含む配列をループする結果になる可能性がありますか?そして、結果を配列に動的に割り当てることができますか?

$countAuctionsQuery = "select COUNT(USERNAME, SUBCAT) from AUCTIONS where username = ? AND SUBCAT = ?"; 

    if ($getRecords = $con->prepare($countAuctionsQuery)) 
     { 
     $getRecords->bind_param("ss", $username, $subcat); 
     $getRecords->execute();   
     $getRecords->bind_result($numRecords); 
     } 

編集:

データだから、

Auctions 


username itemnumber cost category 
------------------------------------------------ 
fredx  222  $33 fake 
fredx  123  $43 fake 
timo  765  $54 fake 
fredx  987  $99 sold 
bobk  233  $77 fake 
wenx  11  $12 ok 
fredx  23  $31 ok 
fredx  723  $73 fake 
wenx  44  $88 ok 

の例では、ユーザ名fredxとカテゴリの偽のため、3が返されます。販売名のfredxとカテゴリについては

、1はユーザ名ティモとカテゴリ偽物について

を返却しなければならない、1ユーザ名のwenxし、[OK]カテゴリでは

を返却しなければならない、2が返されます。

私はそうのようにプリントアウトできるようにしたい:

Fake items: $numfake items or category['fake'] 
OK items: $numok items or category['ok'] 
Sold items: $numsold items or category['sold'] 

答えて

0

これを試してみてください。

function getCategoryCount($user, $conn) { 
    $result = array(); 
    $query = "SELECT category, COUNT(id) AS count FROM Auctions 
       WHERE username=? GROUP BY category"; 
    $stmt = $conn->prepare($query); 
    $stmt->bind_param('s',$user); 
    $stmt->execute(); 
    $stmt->bind_result($cat, $count); 
    while ($stmt->fetch()) { 
     $result[$cat] = $count; 
    } 
    return $result; 
} 

あなたはこのような関数を使用することができます逆に

$count = getCategoryCount('fred', $con); 
print $count['fake']; // prints '3' 

を、あなたもこれを行うことができます:$ numfakeitems 販売された商品:

$query = "SELECT category, COUNT(id) AS count FROM Auctions 
      WHERE username=? GROUP BY category"; 
$stmt = $con->prepare($query); 
$stmt->bind_param('s',$user); 
$user = 'fred'; 
$stmt->execute(); 
$stmt->bind_result($cat, $count); 
while ($stmt->fetch()) { 
    ${'num'.$cat} = $count; 
} 

print $numfake; 
print $numok; 
print $numsold; 
0

使用この:

SELECT subcat, COUNT(*) 
FROM AUCTIONS 
WHERE username = ? 
GROUP BY 
     subcat 

とループで結果をフェッチ:

$countAuctionsQuery = $query; 

if ($getRecords = $con->prepare($countAuctionsQuery)) { 
    $getRecords->bind_param("s", $username); 
    $getRecords->execute();   
    $getRecords->bind_result($subcat, $numRecords); 
    while ($getRecords->fetch()) { 
     print "$subcat items: $numRecords items of category['$subcat']"; 
    } 
} 
+0

は私が 偽造品のようにプリントアウトできるようにする必要があります:$ numsolditems oktiems:$ numokitemsなど、私はそれが配列を使うのが理にかなっていると思ったのです。現時点で私が誤解していない限り、私はただ一つの変数でそれを行うことはできないと思いますか? –

+1

取得したいサンプルデータと結果セットを投稿してください。 – Quassnoi

+0

質問に追加 –

関連する問題