每次从数据库中获取回显数据

Echo data from database in each times get

本文关键字:数据 获取 数据库      更新时间:2023-09-26

我发送三次值1&CCD_ 2&3jquery.serialize()替换为PHP中的$hotel_id,现在我想从发送中获取与$hotel_id链接的数据(如:123(。但在下面的代码中,我只得到链接到最后一个CCD_ 10(3(的数据。

我想要作为:

首先:获取与1链接的数据,并在json_encode中回显这些数据
第二个:(下一个2(获取与2链接的数据,并在json_encode
第三个:(下一个3(获取与3和echo链接的数据他们在CCD_ 17
。。。

这是jQuery代码的输出serialize()

hotel_id=1&hotel_id=2&hotel_id=3

这是我的php代码:

$hotel_id = $this->input->post('hotel_id');
$query_r  = $this->db->query("SELECT * FROM hotel_submits WHERE id LIKE '$hotel_id' ORDER BY id desc");
$data     = array();
foreach ($query_r->result() as $row) {
    $data_s  = json_decode($row->service, true);
    $data_rp = json_decode($row->address, true);
    $data[]  = array(
        'name' => $row->name,
        'star_type' => $row->star . '-' . $row->type,
        'site' => $row->site,
        'service' => $data_s,
        'address' => $row->address
    );
}
echo json_encode($data);

我该怎么办?

同一个参数不能传入三次。它将只看到hotel_id的最终参数,因此您只得到数字3。PHP允许通过在参数末尾使用[]命名来传递数组,就像hotel_id[]=1&hotel_id[]=2等,然后可以在php中获得值的数组。这意味着$hotel_id的值将是一个值数组,而不是单个值。由于它是一个数组,您需要使用逗号内爆数组,以便在SQL中使用:

$hotel_id = implode(',', $this->input->post('hotel_id'));

现在$hotel_id将看起来像"1,2,3";

现在您的SQL需要更改为:

SELECT * FROM hotel_submits WHERE id IN ($hotel_id) ORDER BY id desc

希望能有所帮助。