【问题标题】:Join 2 SQL tables into 1 array of data将 2 个 SQL 表加入 1 个数据数组
【发布时间】:2012-10-17 23:10:02
【问题描述】:

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

  • questions 具有以下字段:questionId、title、category、 正确答案ID,网址
  • answers 具有以下字段:answerId、questionId、文本

我有这个功能:

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

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

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

提前致谢。

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    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?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多