IN子句只返回1行

时间:2012-04-03 01:45:03

标签: php mysql in-clause

我在链接表中有一个链接和标题列表,我正在尝试使用IN子句返回它们,但查询永远不会返回多行,并且始终是该行的最小行。

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;
}

感谢您的帮助。

1 个答案:

答案 0 :(得分: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;