PHP-JQuery-Ajax:如何用mysql查询结果(json编码数组)的所有结果填充表


PHP-JQuery-Ajax: How to Populate table with all results from mysql query result (json encoded array)

我一直在试图找出如何加载搜索结果到一个表,但无论我做什么,我只得到一个单一的结果,而不是2(样本大小)行,我在表中的db。

这是MySQL的代码:
if (isset($_POST['search_value'])) {
$search_value = mysqli_real_escape_string($conn, $_POST['search_value']);
$sql = "SELECT
        record_id,
        personal_id,
        name,
        status,
        entry_date
        FROM sample_db
        WHERE EmpID = '".$search_value."'";
$res = mysqli_query($conn, $sql) or die("Error: ".mysqli_error($conn));
$data = array();
while($row = mysqli_fetch_array($res)){
$data = array(
        'tb_record_id' => $row['record_id'],
        'tb_personal_id' => $row['personal_id'],
        'tb_name' => $row['name'],
        'tb_status' => $row['status'],
        'tb_entry_date' => $row['entry_date'],
        );
        }
        echo json_encode($data);
}

我读过几个例子,其中数组被构建为$data[] = array(数据去这里)而不是$data = array(数据去这里),但每当我尝试$data[]时,它不会返回任何东西到表,但控制台日志确实显示数组内的所有结果。

同样,使用dataType: 'json'似乎也不起作用。

到目前为止,我尝试过的唯一方法是给每个<td>一个id。

ajax代码

$.ajax({
        type : 'POST',
        url  : 'search_fetch.php',
        data : data,
        cache: false,
        success :  function(response)
                {
                result = jQuery.parseJSON(response);                        
                $("#list_p_id").append(result.tb_personal_id);
                $("#list_name").append(result.tb_name);
                $("#list_status").append(result.tb_status);                                     
                $("#list_date").append(result.tb_entry_date);
     }
});

如何用所有可用的结果填充表?

如果有帮助的话,我也可以不使用数组。我只是不知道如何将查询结果发送到ajax响应的另一种方法。

在你的while循环中,你需要以一种不会每次都覆盖整个数组的方式将每一行结果推入数组。

例如:

while($row = mysqli_fetch_array($res))
{
    array_push($data, array(
        'tb_record_id' => $row['record_id'],
        'tb_personal_id' => $row['personal_id'],
        'tb_name' => $row['name'],
        'tb_status' => $row['status'],
        'tb_entry_date' => $row['entry_date'],
        )
    );
}

当您这样做时,请记住$data现在是一个数组的数组,您将需要在ajax中相应地访问这些项。

回答你问题的附加信息:

我没有意识到您还需要关于如何在表中显示结果数据的信息…

您将需要使用某种动态代码来生成HTML,以便为每个表格单元格分配一个唯一的id。

完成后,需要在ajax代码中使用循环,以便将结果数据分配给每个表格单元格并显示它。

当前,您的循环将一遍又一遍地将数据覆盖到现有元素中,这意味着您只能获得一行信息。