我有我的鏈接表中的鏈接和標題的列表,我試圖用一個IN子句返回它們,但查詢永遠不會返回多於一行,總是最小行的集合。IN子句只返回1行
SELECT title, url
FROM opsx_links
WHERE linkid IN('61','60','10','24','15','20','30','47')
這將返回所有8個環節,因爲它們都存在,但只返回信息的項目10.如果我刪除了10項形式的列表,它就會只返回第15項等。
我會失去它還是什麼?
我搜索了我的屁股並找不到任何有此問題的人。
謝謝。
-V
確定是我不好,這裏的PHP代碼
public function getLinks ($data) {
$query = $this->db->Fetch ("SELECT title, url
FROM {$this->prefix}links WHERE linkid IN(" . $data . ")");
$result = $this->db->FetchObject ($query);
foreach ($result as $key => $value):
$result->$key = $this->replace_strings ($value);
endforeach;
$this->db->Free ($query);
return $result;
}
每jeron
$res = array();
while ($result = $this->db->FetchObject ($query)):
$res['title'] = $result->title;
$res['url'] = $result->url;
endwhile;
現在只返回的第一行,而不是最小行嘗試這樣做。
什麼在世界上?
經過多次試驗和錯誤以及所有專家的幫助之後,以下是答案。
public function getLinks ($data) {
$query = $this->db->Fetch ("SELECT title, url
FROM {$this->prefix}links WHERE linkid IN(" . $data . ")");
$res = array();
while ($results = $this->db->FetchArray ($query)):
$obj = new stdClass;
$obj->title = $results['title'];
$obj->url = $this->replace_strings($results['url']);
$res[] = $obj;
endwhile;
$this->db->Free ($query);
return (object)$res;
}
感謝您的幫助。
什麼的linkID的數據類型? – 2012-04-03 01:46:20
顯示您的PHP代碼。我敢打賭,當你應該在循環中調用它時,只需一次調用'mysql_fetch _ *()'。 – 2012-04-03 01:46:24
您是否嘗試過使用謂詞選擇count(*)? – dldnh 2012-04-03 01:54:57