リンクテーブルにリンクとタイトルのリストがありますが、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;
}
ありがとうございました。
リンクIDのデータ型は何ですか? –
PHPコードを表示します。私の賭けはループで呼び出すべきときに 'mysql_fetch _ *()'への一回の呼び出しで賭けます。 –
その述部でcount(*)を選択しようとしましたか? – dldnh