postgresql — PHP параметр передачи postgres

Я новичок в PHP, и я использую некоторый существующий код. Автор кода предложил мне:

// My lines
$_cp_sql .= " SET SESSION "."my.tech"." = :my_current_user";
$res_prepare = prepare_db($conn, $_cp_sql);
$res_bind = bind_param_db($res_prepare, ':my_current_user' , $current_user );
$res_ex = execute_prepared_db($res_prepare,0);

Примечание: prepare_db и все другие функции_db — это функции PDO, созданные автором для совместимости с MYSQL, Postgres и SQLITE.

Мой случай — Постгрес. Однако execute выдает эту ошибку, и после нескольких дней чтения я все еще не понимаю, почему. Что я делаю неправильно?

The DBMS server said: SQLSTATE[42601]: Syntax error: 7
ERROR: syntax error at or near "$1" LINE 1: SET SESSION my.tech = $1 ^

0

Решение

Я не думаю, что это имеет какое-либо отношение к PostgreSQL. Это PHP, который ужасен во всем.

// My lines
$_cp_sql .= " SET SESSION "."my.tech"." = :my_current_user";

Во-первых, это так же, как ..

$_cp_sql .= " SET SESSION my.tech = :my_current_user";

Во-вторых, я не думаю SET принимает подготовленные заявления. От документы по PREPARE

Любой оператор SELECT, INSERT, UPDATE, DELETE или VALUES.

Итак, кормление prepare_db а также execute_prepared_db SET не имеет никакого смысла в любом случае.

Стесняюсь этого, php это ужасный язык, и я даже не уверен, что дает вам prepare_db, bind_param_db, или же execute_prepared_db, Я считаю, что, несмотря на намерения автора, автор не понимает SQL. Я бы искал другой код в другом месте.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]