對不起先爲我糟糕的英語...但我有一些問題需要一些建議MySQL查詢陣列
我怎麼能在一個查詢從數據庫中獲得數據?ISIT能夠從數據庫獲取陣列,主要內數組有另一個數組?
表結構:
user_post -
id int(12) AI unique
uid int(12)
content text
user_image -
filename varchar255
uid int(12)
pid int(12) index
pid->foreign_key user_post.id
ON DELETE CASCADE
ON UPDATE CASCADE
例如: 每個user_post可以包含超過1個user_image但最多10行,我怎麼能選擇並在1個陣列使一切都在一起,所以不需要像下面那樣運行查詢2次?
查詢2次,以完成這個例子:
$db = new Db('main');
$db->query('SELECT `id`, `uid`, `content` FROM `user_post` WHERE `id` = :id LIMIT 1');
$db->bind(':id', '1'); //Example
$result = $db->single();
$db->query('SELECT `filename`, `uid`, `pid` FROM `user_image` WHERE `pid` = :pid LIMIT 10');
$db->bind(':pid', $result['id']);
$images = $db->resultset();
所以$圖像將包含所有職位的圖像文件名,反正讓它在1個查詢?
謝謝,現在試試吧,內部連接相當混淆,所以後來$ result ['user_image']會是一個包含所有圖像的數組? – geass
@geass,no結果將包含來自您選擇的兩個表的所有字段「p.id,p.uid,p.content, i.filename,i.uid,i.pid',您可以選擇只有你想要選擇的內容,並且最後使用'WHERE'子句來表達你的條件。 –
恩......我測試過,它完全得到我想要的。 但得到了另一個問題,是否有可能運行,如果其他在MySQL查詢? user_post獲得另一個字段的調用類型,如果類型0意味着該帖子包含圖像,如果類型1意味着該帖子沒有任何圖像,所以不需要使用INNER JOIN,如果其他內部查詢是可以做的嗎? – geass