Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL如何在一个查询中检索匹配多个不同值的记录_Php_Mysql_Sql_Query Optimization - Fatal编程技术网

PHP MySQL如何在一个查询中检索匹配多个不同值的记录

PHP MySQL如何在一个查询中检索匹配多个不同值的记录,php,mysql,sql,query-optimization,Php,Mysql,Sql,Query Optimization,我在php上有一个数组,其中包含我想要检索的记录的一些ID,我正在通过一个循环执行查询几次以获取它们 foreach ($receivers as $id) { $sth = $this->db->prepare("SELECT phone FROM contact WHERE idcontact = ?"); $sth->execute(array($id)); $res= $sth->fet

我在php上有一个数组,其中包含我想要检索的记录的一些ID,我正在通过一个循环执行查询几次以获取它们

foreach ($receivers as $id) {

            $sth = $this->db->prepare("SELECT phone FROM contact WHERE idcontact = ?");

            $sth->execute(array($id));

            $res= $sth->fetch();
            echo $res['phone'] ;
            }
我怎样才能在一个查询中完成它,这样我就不会用数百个查询来打扰数据库了

$sth = $this->db->prepare("SELECT phone FROM contact WHERE idcontact IN (" . implode(",",$receivers) . ")");
资料来源:

更好的来源:

您可以在()中使用带有查询参数的
谓词:

$placeholders = implode(",", array_fill(1, count($receivers), "?"));

$sth = $this->db->prepare("SELECT phone FROM contact WHERE idcontact IN ($placeholders)");

$sth->execute($receivers);