Я передаю в функцию массив категорий, и я хочу сделать этот запрос:
$sql = "SELECT *
FROM trans
WHERE id_user = $1 AND id_cat IN ($2)";
$value = array($id_user, implode(",", $categories));
$resource = pg_prepare($db, "get_trans", $sql);
$resource = pg_execute($db, "get_trans", $value);
Но pg_execute выдает мне ошибку
Warning: pg_execute(): Query failed: ERRORE: sintassi di input non valida per il tipo integer: "1,3,5,2,4,6,7" in /var/www/html/progetto-bd/application/function.php on line 370
IN
конструкция требует строка или задавать, не массив.
Если вы передаете массив, используйте ANY
построить.
SELECT *
FROM trans
WHERE id_user = $1 AND id_cat = ANY ($2);
Кроме того, литерал массива Postgres имеет вид '{elem1,elem2}'
, (Обратите внимание на фигурные скобки.)
И вам нужно пройти и то и другое параметры, такие как @ toto21 уже упоминались.
У вас есть два отличия значения: $id_user
(строка) и список категорий, разделенных запятой (строка после взрыва) вашего массива $value
должен содержать только два значения.
Попробуй это :
$str_categories = implode(",", $categories);
$arr_value = array($id_user, $str_categories);
$resource = pg_prepare($db, "get_trans", $sql);
$resource = pg_execute($db, "get_trans", $arr_value);