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

Php 从ID数组获取数据库结果,php,mysql,select,multidimensional-array,pdo,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("S

为这个问题的幼稚道歉。我刚刚开始一个项目,我有一个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;       
}

谢谢。

调整您的PHP以创建具有以下格式的单个查询字符串:

SELECT * 
FROM slides
WHERE slideID IN (2,5,11)

不要执行多个查询:

调整PHP以创建具有以下格式的单个查询字符串:

SELECT * 
FROM slides
WHERE slideID IN (2,5,11)

不要执行多个查询:

最好使用IN子句只执行一条SQL语句

SELECT * FROM slides WHERE slideID IN (1,2,3,4,5, ...) 
因为较少的数据库连接和访问通常会提高性能


因此,只需在循环中构建SQL字符串,然后将Execute移到循环外的底部。

最好使用in子句只执行一条SQL语句

SELECT * FROM slides WHERE slideID IN (1,2,3,4,5, ...) 
因为较少的数据库连接和访问通常会提高性能

因此,只需在循环中构建SQL字符串,然后将Execute移到循环外的底部。

与其他命令相同

使用IMPODE$array,将应该进入IN语句的部分与其他部分相同


使用IMPODE$array,获取应该进入IN语句的部分,以下操作应该有效。使用内爆创建所需的字符串,该字符串包含以逗号分隔的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;   
    }

以下几点应该行得通。使用内爆创建所需的字符串,该字符串包含以逗号分隔的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;   
    }

这行不通。每次在循环中执行后,都需要存储结果。请参阅答案以获得替代方案。这不起作用。每次在循环中执行后,都需要存储结果。请参阅答案以了解备选方案。