如何在php中传递多行json



我试图将行详细信息传递为JSON。如何将所选列从查询

中分离出来
$SQLTask = "
SELECT priority
, task_name AS title
, task_description AS description
, start_date AS start
, end_date AS end 
FROM t_tasks
"; -- removed extraneous semi-colon
$RESULT_Task = mysqli_query( $conn, $SQLTask );

while($ROW_TASK = mysqli_fetch_assoc($RESULT_Task)) 
{
$TASK_NAME = $ROW_TASK['title'];
$TASK_DESC = $ROW_TASK['description'];
$TASK_START = $ROW_TASK['start'];
$TASK_END = $ROW_TASK['end'];
}

$TASK_DETAILS[] = array('title' => $TASK_NAME, 'description' => $TASK_DESC, 'start' => $TASK_START, 'end' => $TASK_END); 
mysqli_close($conn);
echo json_encode($TASK_DETAILS);

尝试了下面的格式,它工作了,但我需要使用其他查询的优先级列。JSON是用来提供日历和显示事件的。

<?php 
require('../classes/class_connect.php');
$Project_ID = $_GET['id'];
$SQLTask = "SELECT task_name AS title, task_description AS description, start_date AS start, end_date AS end FROM t_tasks WHERE project_id = " . $Project_ID . "";
$RESULT_Task = mysqli_query( $conn, $SQLTask );

while($ROW_TASK = mysqli_fetch_assoc($RESULT_Task)) 
{
$TASK_ARRAY[] = $ROW_TASK;
// if($ROW_TASK['priority'] == 'Low')
// {
//     $eventClassNames = "bg-light-secondary";
// }
// else if($ROW_TASK['priority'] == 'Normal')
// {
//     $eventClassNames = "bg-light-primary";
// }
// else if($ROW_TASK['priority'] == 'High')
// {
//     $eventClassNames = "bg-light-warning";
// }
// else if($ROW_TASK['priority'] == 'Urgent')
// {
//     $eventClassNames = "bg-light-danger";
// }
// array_push($TASK_ARRAY,$eventClassNames);
}
mysqli_close($conn);

echo json_encode($TASK_ARRAY);```

我不确定我是否清楚地理解了您的问题以及您想要实现的"如何将所选列从查询中分离出来"。

但是对于您演示的第二部分,由于您想要的只是优先级字段,因此可以从查询中删除所有其他字段。你也可以在查询中添加eventClassNames。

尝试使用mysqli的fetch_all,看看它是如何工作的。对于第一部分,您不需要遍历结果集来创建数组,除非对数组https://www.php.net/manual/en/mysqli-result.fetch-all.php

进行进一步处理
$SQLTask = "SELECT priority,
case priority
when 'Low' then 'bg-light-secondary'
when 'Normal' then 'bg-light-primary'
when 'High' then 'bg-light-warning'
when 'Urgent' then 'bg-light-danger'
end AS eventClassName
FROM t_tasks WHERE project_id = " . $Project_ID . "";
$RESULT_Task = mysqli_query( $conn, $SQLTask );
$TASK_ROWS=$RESULT_TASK->fetch_all(MYSQLI_ASSOC);
$TASK_ARRAY=array_column($TASK_ROWS,'eventClassName');
echo json_encode($TASK_ARRAY);
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %sn", $mysqli->connect_error);
exit();
}
$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = $mysqli->query($query);
/* numeric array */
$row = $result->fetch_array(MYSQLI_NUM);
printf ("%s (%s)n", $row[0], $row[1]);
/* associative array */
$row = $result->fetch_array(MYSQLI_ASSOC);
printf ("%s (%s)n", $row["Name"], $row["CountryCode"]);
/* associative and numeric array */
$row = $result->fetch_array(MYSQLI_BOTH);
printf ("%s (%s)n", $row[0], $row["CountryCode"]);
/* free result set */
$result->free();
/* close connection */
$mysqli->close();
?>

echo json_encode($row)

裁判:https://www.php.net/manual/en/mysqli-result.fetch-array.php

最新更新