每次从数据库回收数据得到

时间:2011-09-27 10:54:55

标签: php javascript jquery arrays codeigniter

我发送三次值1& 2& 3 jquery.serialize() $hotel_id代表PHP $hotel_id,现在我希望每次都从发送,与1相关联的数据(例如:2或{{来自数据库的1}}或3)。但在下面的代码中,我只获取链接到上一个$hotel_id3)的数据。

我想要:

  

首先:获取与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);

我该怎么办?

1 个答案:

答案 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

希望有所帮助。