php - 优化我的循环以返回而不是执行 10 次查询

标签 php mysql arrays loops pdo

我在以下变量的数组中返回了有限数量的学生 (10),

$result 变量是一个数组,它包含学生 ID,如下例所示

Array ( 
[student1] => 4 
[student2] => 1 
[student3] => 3 
[student4] => 2 
[student5] => 5 
[student6] => 10 
[student7] => 12 
[student8] => 16 
[student9] => 17 
[student10] => 18 
)

我尝试过的

$values = implode(", ", $result);
$sql = "SELECT sub1, sub2 FROM students WHERE students.id IN (" . $values . ")";

try{
    $db = new db();
    $db = $db->connect();
    $stmt = $db->query($sql);

    $subject = $stmt->fetchAll(PDO::FETCH_OBJ);

    $db = null;
    if(empty($subject)) {
        $response->getBody()->write
        ('{"error":{"message":"Invalid Request}}');
    } else {
        $subject = json_decode(json_encode($subject), True);
        if (in_array("BIO", $subject))
          {
            return true;
          }
        else
          {
            return false;
          }
     print_r($subject);
    }
  } catch(PDOException $e) {}

我确定如何在一个查询中优化我的查询,而不是循环 10 个查询

最佳答案

如果你想一次查询,你可以发出这样的请求:

$values = implode(", ", $result);
$sql = "SELECT sub1, sub2 FROM students WHERE students.id IN (" . $values . ")";

这将通过一个请求返回您的所有学生

编辑:删除了 foreach,谢谢不要 panic

关于php - 优化我的循环以返回而不是执行 10 次查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45842680/

相关文章:

javascript - 对数组中的项目求和

php - 为什么总是使用 while 循环来获取 mysql 结果?

php - 代码未在 $.get() 成功处理程序内运行

javascript - 如何将包含逗号的字符串保存到数据库中

php - 用于存储契约(Contract)的数据库 : mysql + php, 在数据库设计中处理编号项目

php - 什么是完成 : explode -> apply some_func -> implode without a foreach? 的优雅方法

php - Python/Django 到 PHP 的过渡?学习曲线错误?

javascript - PHP/cURL 或 file_get_contents -- 如何获取 JS 页面的值而不是 JS 代码

html - 我可以自定义编辑 WordPress 图像页面吗?

arrays - 无法为函数范围外的数组赋值。 swift 和火力地堡