Я новичок в 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 ^
Я не думаю, что это имеет какое-либо отношение к 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. Я бы искал другой код в другом месте.
Других решений пока нет …