2012-04-03 95 views
0

我有我的鏈接表中的鏈接和標題的列表,我試圖用一個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; 
} 

感謝您的幫助。

+0

什麼的linkID的數據類型? – 2012-04-03 01:46:20

+9

顯示您的PHP代碼。我敢打賭,當你應該在循環中調用它時,只需一次調用'mysql_fetch _ *()'。 – 2012-04-03 01:46:24

+0

您是否嘗試過使用謂詞選擇count(*)? – dldnh 2012-04-03 01:54:57

回答

1

編輯:您只得到從結果一個結果集:

$result = $this->db->FetchObject ($query); 

應該是這樣的:

$my_results = array(); 
while ($result = $this->db->FetchObject ($query)) 
{ 
    // make a new/clone the object, add it to the array and do the processing 
} 
return $my_results; 
+0

@jeron它應該被覆蓋,它會在## VARIABLE ##上替換每個鏈接的常量。另外它是一個不是數組的對象。 – 2012-04-03 02:29:03

+0

@Vince Kronlein對不起,我沒有仔細閱讀,你需要調用'$ result = $ this-> db-> FetchObject($ query);'在循環中,我會更新我的答案。 – jeroen 2012-04-03 02:31:15

+0

仍然沒有愛。 我試着將代碼添加到問題中,它仍然只返回一行,但現在只是第一行。 – 2012-04-03 02:47:34