我有 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/