对这个问题的新生事道歉。我刚刚开始一个项目,我有一系列ID来从表中获取某些记录。什么是最好的方法呢?
以下是否有效?
public function getWork($slideIDs) {
$params = array();
$params = $slideIDs;
$count = count($params);
for($i=0;$i<$count;$i++) {
$STH = $this->_db->prepare("SELECT *
FROM slides
WHERE slideID = :slideID;");
$STH->execute($params[$i]);
}
$result = $STH->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
感谢。
答案 0 :(得分:2)
调整PHP以使用以下格式创建单个查询字符串:
SELECT *
FROM slides
WHERE slideID IN (2,5,11)
不要执行多个查询。 :)
答案 1 :(得分:2)
最好使用IN子句
执行一个SQL语句SELECT * FROM slides WHERE slideID IN (1,2,3,4,5, ...)
由于较少的连接和数据库访问通常会提高性能。
所以只需在循环中构建SQL字符串,然后将Execute移到底部(循环外部)。
答案 2 :(得分:2)
与其他人相同;)
使用implode($array, ",")
获取应该进入IN()
声明的部分
答案 3 :(得分:1)
以下内容应该有效。使用implode创建必需的字符串,其中包含用逗号分隔的ID以传递给SQL。
function getWork($slideIDs) {
$params = implode(",",$slideIDs);
$STH = $this->_db->prepare("SELECT *
FROM slides
WHERE slideID in ( :slideID );");
$STH->execute($params);
$result = $STH->fetchAll(PDO::FETCH_ASSOC);
return $result;
}