2012-04-03 6 views
0

リンクテーブルにリンクとタイトルのリストがありますが、IN句を使用して返すようにしていますが、クエリでは1つ以上の行が返されることはなく、常に最小行セットのIN句のみ1行を返します

SELECT title, url 
FROM opsx_links 
WHERE linkid IN('61','60','10','24','15','20','30','47') 

、彼らがすべてそうであるようにこれは、すべての8つのリンクを返す必要がありますが存在するが、私はリストを形成する項目10を削除した場合、それが唯一の項目10のための情報を返す、それはその後、唯一のようにアイテム15とを返します。

私はそれを失うか何ですか?

私は私のお尻をgoogledして、この問題を抱えている誰かを見つけることができません。

ありがとうございました。

-V

OKここに私の悪いは、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

リンクIDのデータ型は何ですか? –

+9

PHPコードを表示します。私の賭けはループで呼び出すべきときに 'mysql_fetch _ *()'への一回の呼び出しで賭けます。 –

+0

その述部でcount(*)を選択しようとしましたか? – dldnh

答えて

1

編集:あなたが唯一の結果セットから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 ##の文字列を各リンクの定数で置き換えます。それは配列ではないオブジェクトです。 –

+0

@Vince Kronlein申し訳ありませんが、十分に注意深く読んでいないので、 '$ result = $ this-> db-> FetchObject($ query);'をループで呼び出す必要があります。 – jeroen

+0

まだ愛はありません。 質問に追加されたコードを試しましたが、まだ1行だけが返されていますが、最初の行が返されます。 –

関連する問題