php - 为什么我的SQL语句只返回一条记录?

标签 php mysql pdo

我正在使用 PHP PDO 对数据库进行查询,我正在寻找所有用户,其中表中的许多外键与先前 PDO 对象输出的数组相匹配。

$in = "";
foreach ($parent_ids as $i => $item)
{
    $key = ":".$i;
    $in .= "$key,";
    $in_params[$key] = $item; // collecting values into key-value array
}
$in = rtrim($in,",");

$sqlRequestParentInfo = "SELECT * FROM academy_user WHERE user_id IN ($in)";
$stmt = $dbConn->prepare($sqlRequestParentInfo);
var_dump($stmt);
$stmt->execute($in_params);
$parent_info = $stmt->fetchObject();

/*echo print_r($ids);
echo json_encode($parent_ids);*/
echo "<pre>";
echo "<br> PARENT INFO <br>";
var_dump($parent_info);
$parent_info = json_encode($parent_info);
echo $parent_info;
echo "</pre>";

parent_ids 数组是按以下方式格式化的键数组:parent3_id_fk、parent4_id_fk 等。

并且每个键的值都是一个 3 位数字,表示表中分配给“学生”的“ parent ”的外键。

我正在使用这些外键查询 academy_user 以查找有关这些 parent 的信息。所以我使用 WHERE user_id IN (values) SQL 语句。它似乎运行良好,除了我只为用户“426”返回一条记录,即使此表中也有一个用户“427”外键。

这是 parent_info 的 var_dump:

object(stdClass)#2 (11) {
  ["user_id"]=>
  string(3) "426"
  ["user_email"]=>
  string(11) "a@gmail.com"
  ["password"]=>
  string(60) "$2y$10$V4sPIs3fdJ7F49cNtl8eyufuLGu9leTUH4Fl5VUUAcgq4zB/NzUn6"
  ["f_name"]=>
  string(1) "a"
  ["l_name"]=>
  string(1) "a"
  ["address_id_fk"]=>
  NULL
  ["access_lvl"]=>
  string(1) "3"
  ["date_created"]=>
  string(19) "2019-03-28 13:42:15"
  ["date_gdpr_remove"]=>
  NULL
  ["approved"]=>
  string(1) "1"
  ["requested_access_fk"]=>
  string(1) "3"
}

这只是示例数据。有什么想法吗?

编辑: 这是注入(inject)参数然后执行之前的 SQL 语句的样子:

SELECT * FROM academy_user WHERE user_id IN (:parent1_id_fk,:parent2_id_fk,:parent3_id_fk,:parent4_id_fk,:parent5_id_fk,:parent6_id_fk,:parent7_id_fk,:parent8_id_fk,:parent9_id_fk)

最佳答案

您只会返回一条数据,因为您只调用了 $stmt->fetchObject()一次。您需要在循环中调用它并获取 parent_info 数组:

$stmt->execute($in_params);
$parent_info = array();
while ($parent = $stmt->fetchObject()) {
    $parent_info[] = $parent;
}
echo json_encode($parent_info);

关于php - 为什么我的SQL语句只返回一条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55727420/

相关文章:

mysql - 如何修改数据库字段来更改所有产品的 magento 1 税费?

mysql - Django ORM : How to filter in an annotation with Count() (subquery) without rawsql

php - PDO 绑定(bind)参数不起作用

php - Facebook 图搜索 API

php - 解析没有对象名称的 JSON

javascript - 如何仅将 CSS 样式应用于选定的行?

mysql - 如何在本地主机(xampp)中打开/关闭 MySQL 严格模式?

php - PHP MySQL 中两次之间的持续时间

php - 如何使用准备好的语句在MySQL中插入多行而不插入空白行

php - 无法将整数数据插入MySQL,它插入为0