IN子句只返回1行
我有我的链接表中的链接和标题的列表,我试图用一个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;
}
感谢您的帮助。
编辑:您只得到从结果一个结果集:
$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;
@jeron它应该被覆盖,它会在## VARIABLE ##上替换每个链接的常量。另外它是一个不是数组的对象。 – 2012-04-03 02:29:03
@Vince Kronlein对不起,我没有仔细阅读,你需要调用'$ result = $ this-> db-> FetchObject($ query);'在循环中,我会更新我的答案。 – jeroen 2012-04-03 02:31:15
仍然没有爱。 我试着将代码添加到问题中,它仍然只返回一行,但现在只是第一行。 – 2012-04-03 02:47:34
什么的linkID的数据类型? – 2012-04-03 01:46:20
显示您的PHP代码。我敢打赌,当你应该在循环中调用它时,只需一次调用'mysql_fetch _ *()'。 – 2012-04-03 01:46:24
您是否尝试过使用谓词选择count(*)? – dldnh 2012-04-03 01:54:57