Данные запроса PHP Oracle на основе данных массива в таблице

1

У меня есть 2 таблицы в Oracle db.

t_master_cp

cp_id | cp_name
1     | eat
2     | play
3     | run
4     | sleep

t_choose_cp

form_no | uid | cp_id
1       | 1   | 3,4
2       | 2   | 1,3,4
3       | 3   | 1,2,3

Теперь я хочу запросить данные в PHP-программировании, и это мой код:

$uid = "1";
$q_get_choose_cp = oci_parse($c1, "SELECT * FROM t_choose_cp WHERE uid = '$uid'");
oci_execute($q_get_choose_cp);
$d_get_choose_cp = oci_fetch_array($q_get_choose_cp);
$get_cp = $d_get_choose_cp['cp_id'];

$q_data = oci_parse($c1, "SELECT * FROM t_master_cp WHERE cp_id IN '$get_cp'");
oci_execute($q_data);
while($d_data = oci_fetch_array($q_data))
{
     $get_cp_name = $d_data['cp_name'];
     ?>

     <div><?php echo $get_cp_name; ?></div>
<?php
}

При запуске запроса результат пуст и получил ошибку: Warning: oci_execute(): ORA-01722: invalid number in...

Теги:

1 ответ

0

Пытаться

$uid = 1;
$q_get_choose_cp = oci_parse($c1, "SELECT * FROM t_choose_cp WHERE uid = $uid");

Не нужно указывать значение, если тип данных в вашей таблице является числом.

тогда:

$get_cp = '('.implode(',',$d_get_choose_cp['cp_id']).')';

Это даст вам запрос типа: "SELECT * FROM t_master_cp WHERE cp_id IN (1,2,3)"

Надеюсь, это сработает для вас.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню