作者issuemylove (skill)
看板PHP
標題[請益] codeigniter 資料庫查詢語法問題
時間Tue Nov 20 17:33:18 2012
可以請問各位大大下面有關CI的資料庫抓取語法有甚麼問題嗎?
內容主要是從一個list table 查出朋友id
再利用所有朋友id去query foodTable查出他們愛的食物
請問這程式碼有甚麼錯誤
我的php跑到這邊沒有反應,不知道是錯誤還是還是怎樣QQ
不過我確定資料庫中至少是有match的東西
謝謝各位大大幫忙!
public function load_friends_food( $myId){
$sql =
"SELECT friend_id FROM list WHERE id = ?";
$friend_list = $this->db->query($sql,
array($myId));
$query =
array();
foreach( $friend_list->result()
as $row ){
$fid = $row->friend_id;
$sql =
"SELECT * FROM foodTable WHERE id = ? AND type = ?";
$food = $this->db->query( $sql,
array($fid,0));
array_merge($query, $food->result_array());
}
return $query;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.52.245
1F:推 appleboy46:有需要用到 foreach? 11/20 22:42
2F:→ tkdmaf:我怎麼感覺你對SQL不熟? 11/20 22:47
3F:→ issuemylove:會用到foreach是因為要搜尋所有朋友的喜愛的食物QQ 11/21 01:27
4F:→ issuemylove:的確是蠻不熟的orz 11/21 01:28
5F:→ issuemylove:不知大大有何高見QQ 11/21 01:30
6F:→ bigbite:用join 11/21 06:06
7F:→ tkdmaf:高見不敢,是說active record還挺方便的怎麼你沒用? 11/21 09:20
後來我將array_merge( $query, $food->result_array()); 那一行換成
$temp = $food->result_array();
array_push( $query, $temp[0]); 就ok了 T_T|||
然後也試了 join 的方法,寫成如下:
$sql = "SELECT b.* FROM list AS a, foodTable AS b WHERE a.id = ? AND
a.friend_id = b.id AND b.type = ?";
$query = $this->db->query( $sql, array( $myId, 0));
也成功了...當然也發現
我對SQL真的不熟orz|||
謝謝各位大大的幫助!
※ 編輯: issuemylove 來自: 114.36.52.245 (11/21 12:40)
8F:→ Bambe:其實 join 是這樣寫的... 11/22 00:41
9F:→ Bambe:SELECT * FROM list AS a 11/22 00:42
10F:→ Bambe:LEFT JOIN foodtable AS b ON b.id = a.id 11/22 00:42
11F:→ Bambe:WHERE a.id = ? AND b.type = ? 11/22 00:42
12F:→ Bambe:剛沒看清楚... LEFT JOIN 後面是 b.id = a.friend_id 11/22 00:44
13F:→ issuemylove:感謝教學QQ 可是我看某一個網站教的是我那樣寫耶? 11/22 13:34