Php 在每次获取时从数据库回显数据

Php 在每次获取时从数据库回显数据,php,javascript,jquery,arrays,codeigniter,Php,Javascript,Jquery,Arrays,Codeigniter,我通过jquery.serialize()为PHP中的$hotel\u id发送了三次值1&2,现在我想从send中获取与数据库中的$hotel\u id链接的数据(如:1或2或3)。但在下面的代码中,我只得到链接到最后一个$hotel\u id(3)的数据 我想成为: 首先:获取与1链接的数据,并在json\u encode Second:(下一步2)获取与2链接的数据,并将其回显 json\u encode第三方:(下一步3)获取与3和echo链接的数据 它们在json\u编码中 这是jQu

我通过
jquery.serialize()
为PHP中的
$hotel\u id
发送了三次值
1
&
2
,现在我想从send中获取与数据库中的
$hotel\u id
链接的数据(如:
1
2
3
)。但在下面的代码中,我只得到链接到最后一个
$hotel\u id
3
)的数据

我想成为:

首先:获取与
1
链接的数据,并在
json\u encode

Second:(下一步2)获取与
2
链接的数据,并将其回显
json\u encode

第三方:(下一步3)获取与
3
和echo链接的数据 它们在
json\u编码中

这是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

希望对您有所帮助。

不需要在
$query\r
foreach
中进行更改?这有错误:
Parse error:syntax error,意外的“;”如果您将hotel_id内爆为一个变量,那么您的脚本将按照预期的方式运行(我没有测试它)。请注意,我没有验证foreach中的任何代码,我只是解释了hotel_id和sql查询的问题。我建议添加调试元素来分析脚本。这将帮助您了解PHP在流程的每个步骤中发生了什么。例如,在邮件内爆后$hotel_id的值是多少?(print_r($hotel_id);)可以,但是这个
$hotel_id='1,2,3'不适用于查询和foreach。你是对的。我使用IN子句编辑了我的答案以反映必要的SQL更改。