我发送三次值1
& 2
& 3
jquery.serialize()
$hotel_id
代表PHP $hotel_id
,现在我希望每次都从发送,与1
相关联的数据(例如:2
或{{来自数据库的1}}或3
)。但在下面的代码中,我只获取链接到上一个$hotel_id
(3
)的数据。
我想要:
首先:获取与
1
关联的数据并在json_encode
中回显它们 第二 :(接下来的2)获取与2
关联的数据并回复它们json_encode
第三 :(接下来3)获取与3
关联的数据并回显 他们在json_encode
... ...
这是来自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);
我该怎么办?
答案 0 :(得分:2)
你不能传递三次相同的参数。它只会看到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
希望有所帮助。