【问题标题】:How to use an array to query如何使用数组进行查询
【发布时间】:2019-10-05 14:29:14
【问题描述】:

有什么方法可以使用 $query 中的数组并在另一个查询中使用它,例如下面的 $query2?它可以工作,但它只返回数组的第一个数据......

已经尝试过这些链接,但在我的情况下它们都不起作用 Array in SQL Query?

How to query a database with an array? WHERE = 'array()'

$query = mysqli_query($db, "SELECT * FROM patient_details WHERE discharged_date >= '2019-03-01' AND discharged_date < '2019-03-30'");
    while ($row = mysqli_fetch_array($query)){
        $result = $row['hosp_patient_no'];
        $query2 = mysqli_query($db, "SELECT deficiencies_id FROM deficiency_patient_details WHERE hosp_patient_no = '$result'");

}

【问题讨论】:

  • 除非有特殊原因,否则我会考虑将这两个查询组合成 1 个 SQL 语句。
  • 你必须使用一个列我不完全确定是否可以在 SQL 中比较两个数组但是,你可以在 PHP 中使用两个查询来比较它们
  • 这通常是个坏主意。只需使用 JOIN 代替。
  • 其实我还是打算用数组再查询一次。在 $query2 之后,我将使用该数组再次查询。

标签: php mysql sql


【解决方案1】:

您正在使用 mysqli_fetch_array 它将“将结果行作为关联、数字数组或两者获取”,但您的要求另有说明,因此您应该使用 mysqli_fetch_all “将所有结果行作为关联数组、数字数组,或两者兼有”。

所以你的语法应该是这样的

$query = mysqli_query($db, "SELECT * FROM patient_details WHERE discharged_date >= '2019-03-01' AND discharged_date < '2019-03-30'");
while ($row = mysqli_fetch_all($query)){
    $result = $row['hosp_patient_no'];
    $query2 = mysqli_query($db, "SELECT deficiencies_id FROM deficiency_patient_details WHERE hosp_patient_no = '$result'");

}

事实上,我建议您使用子查询在单个查询中执行此操作。

【讨论】:

  • mysqli_fetch_all() 将在 1 次调用中返回所有行,这也意味着 $row['hosp_patient_no'] 将不正确 - 需要 $row[0]['hosp_patient_no'] 才能使用第一行中的值。
  • 是的,我错过了那个,实际上我从问题中复制了整个代码并忘记了......哎呀。 :)
  • 未定义索引:/
猜你喜欢
  • 2017-02-13
  • 1970-01-01
  • 2021-10-28
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 2020-12-16
  • 1970-01-01
相关资源
最近更新 更多