[英]Combing MySQL Rows With Same ID PHP
我有一個表格“ orders”,其中保存了網站上的所有訂單。 它通過以下方式保存數據:
ID | Session_id | image | item | extra | customer_name
樣品日期
12 | sdgfafjhsf | image1.jpg | coffee | milk | roger
13 | sdgfafjhsf | image1.jpg | muffin | jam | roger
14 | fjgjgsdfjg | image3.jpg | coffee | none | John
目前,我有PHP來訪問數據庫並逐一列出所有清單。
mysql_connect("localhost", "root", "") or die(mysql_error()) ;
mysql_select_db("store") or die(mysql_error()) ;
//Retrieves data from MySQL
$data = mysql_query("SELECT * FROM orders WHERE status ='ordered'") or die(mysql_error()); //Puts it into an array
while($info = mysql_fetch_array( $data ))
{
//Outputs the image and other data
Echo "$info[customer_name] <img src='cameras/$info[image]'/> : $info[item] with $info[extras] <br />";
}
理想情況下,我希望數據按會話ID分組。 因此,它將一次打印出客戶的姓名和圖像,然后再打印與之關聯的所有項目。
例如。 羅傑,咖啡,牛奶,松餅,果醬
有任何想法嗎? 謝謝!
好吧,試試這個
SELECT Session_id,image,item,extra,customer_name FROM orders WHERE status='ordered' group by Session_id,image,item,extra,customer_name
一種簡單的方法是對SQL進行排序,以使您可以從每個會話中獲得彼此相鄰的所有條目,並且只需記住您獲取的最后一個會話ID,即可知道是否應輸出名稱和圖片。 這是一些偽代碼來說明我的意思;
$data =
mysql_query("SELECT * FROM orders WHERE status ='ordered' ORDER BY session_id")
or die(mysql_error());
$last_session_id = "**DUMMY**"; // Set a dummy value to not match the first row
while($info = mysql_fetch_array( $data ))
{
if($info['session_id'] != $last_session_id)
{
//Outputs the image and other data if a new session_id has been found
echo "$info[customer_name] <img src='cameras/$info[image]'/> : $info[item] with $info[extras] <br />";
$last_session_id = $info['session_id'];
} else {
// Same session_id as last row, skip name and picture
echo "$info[item] with $info[extras] <br />";
}
}
作為附帶說明,不建議使用mysql_*
數據庫API,而應考慮改用mysqli
或pdo
。
在這里,您必須運行兩個單獨的查詢。 在第一個查詢中,您必須找到所有不同的客戶名稱,最好使用客戶ID而不是客戶名稱,因為ID不能重復。 然后,在獲得所有已訂購商品的客戶之后,對其進行循環迭代,並在內部循環中運行另一個查詢,以再次通過客戶ID或客戶名稱檢索該客戶的所有訂單。
在while($info = mysql_fetch_array( $data ))
loop中,在其中打印輸出的地方,可以將其添加到鍵為Session_ids的標准數組中。
然后調用echo $foo['sdgfafjhsf']
來獲得一個帶有db-entries的數組,您可以通過print進行相應枚舉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.