我有两个表,其中一个表有多个行,参考另一个表。
questions_table:
id | value_question
---------
1 | "first question"
2 | "second question"
responses_table:
id | question_id| value_response | is_true
-------------------------------------------
1 | 1 | SFU | true
2 | 1 | UBC | false
3 | 2 | BU | true
4 | 2 | RI | false
我知道从PHP中的json中的questions_table返回每一行的最佳做法是:
[
{ "value_question": "first question",
"responses": [
{"value_response": "SFU", "is_true": "true"},
{"value_response": "UBC", "is_true": "false"}
],
},
{ "value_question": "first question",
"responses": [
{"value_response": "SFU", "is_true": "true"},
{"value_response": "UBC", "is_true": "false"}
],
},
]
我只是尝试在MYSQL中进行,但我只能对字符串进行排序。
SELECT
value_question,
CONCAT('[',GROUP_CONCAT('{value_response:',responses.value_response,', is_true:',responses.is_true,'}'),']')'responses'
FROM questions
INNER JOIN responses ON
questions.id = responses.question_id
GROUP BY id_question
我不知道在PHP或MYSQL中执行此操作有什么好处 如果您需要更多详细信息,请告诉我。
对不起我的英语,我是法国人:)
谢谢我知道如何使用json_encode,我的问题更多:这是拥有所述结构的最佳请求。
php:
include 'connect_db.php';
$sql= *the request*
$stmt = $dbh->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode($result);
echo $json;
答案 0 :(得分:0)
请使用以下代码。
对于数据库连接,请使用mysqli_connect函数中的mysql数据库服务器值替换
我使用了mysql查询和php mysqli,因为我不太了解PDO。
首先在变量中接受请求,然后运行mysql连接查询。迭代mysql获取的结果并构建一个数组。然后最后做json_encode。
$con = mysqli_connect('db_host', 'db_username', 'db_password', 'db_name'); // please replace with your mysql server values.
$value_question = 'first question'; // your *the request*
$value_question = $con->real_escape_string($value_question); // escape values
$query = " SELECT `responses_table`.`value_response` , `responses_table`.`is_true`
FROM `questions_table`
INNER JOIN `responses_table`
ON `questions_table`.`id` = `responses_table`.`question_id`
WHERE `questions_table`.`value_question` = '$value_question' ";
$result = $con->query($query);
while( $row = $result->fetch_assoc() ){ // build up a responses array
$responses[] = array( 'value_response' => $row['value_response'] ,
'is_true' => $row['is_true']) ;
}
$response = array('value_question' => $value_question ,
'responses' => $responses );
echo json_encode($response); // your json response