php - 将 2 个 SQL 表连接成 1 个数据数组

标签 php mysql sql

我有 2 个表格:问题、答案。

  • questions 具有以下字段:questionId、标题、类别、 正确答案ID,网址
  • answers 包含字段:answerId、questionId、text

我有这个功能:

$result = query("SELECT * FROM questions INNER JOIN answers ON questions.questionId=answers.questionId");

它返回问题 4 次,每次都有不同的答案。 我想要一个包含一系列问题的数组,并且每个问题都有一组相关的答案。

每个问题都有 4 个可能的答案,每个问题都有正确的答案 ID。

提前致谢。

最佳答案

MySQL 本身无法返回这样的多维数组,只能返回二维数组,其中一级是行,二级是列。

您必须迭代结果集并自行构建数组。

在 PDO 中,您可以执行以下操作:

try {
    $pdo = new PDO("mysql:host=localhost;dbname=test", "root", "");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $pdo->query("SELECT * FROM questions INNER JOIN answers ON questions.questionId=answers.questionId");

    $result = array();

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        foreach ($row as $column => $value) {
            if ($column != "answerId") {
                $result[$row["questionId"]][$column] = $value;
            }
        }
        $result[$row["questionId"]][$row["answerId"]] = $row["text"];
    }
}
catch (PDOException $e) {
    //Todo: Error Handling Here
}

这给了我以下结果(你的结果可能看起来不同):

array (size=2)
  1 => 
    array (size=9)
      'questionId' => string '1' (length=1)
      'title' => string 'b' (length=1)
      'category' => string 'letters' (length=7)
      'correctAnswerID' => string '2' (length=1)
      'text' => string 'd' (length=1)
      1 => string 'a' (length=1)
      2 => string 'b' (length=1)
      3 => string 'c' (length=1)
      4 => string 'd' (length=1)
  2 => 
    array (size=9)
      'questionId' => string '2' (length=1)
      'title' => string 'd' (length=1)
      'category' => string 'letters' (length=7)
      'correctAnswerID' => string '8' (length=1)
      'text' => string 'd' (length=1)
      5 => string 'a' (length=1)
      6 => string 'b' (length=1)
      7 => string 'c' (length=1)
      8 => string 'd' (length=1)

关于php - 将 2 个 SQL 表连接成 1 个数据数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13108038/

相关文章:

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

mysql - 以下删除查询我做错了什么?

mysql - 对整行的数据库字段进行加密,包括 bool 值

php - 外部 css 已加载但未应用于 html - php codeigniter ssl - 如何将 css mime type = text/html 更改为 text/css

php - PHP 中的动态标题标签

php - 在页面上的图像后面插入字符串

php - wordpress 与 google map API 不起作用

sql - sqlserver中如何修改主键值?

mysql - 同表关系sql查询

php - 一种全局化mysql函数避免sql注入(inject)的方法