从ID数组中获取数据库结果

时间:2012-05-15 17:43:52

标签: php mysql select multidimensional-array pdo

对这个问题的新生事道歉。我刚刚开始一个项目,我有一系列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;       
}

感谢。

4 个答案:

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