Я пытаюсь сделать что-то вроде следующего:
$json_string = '[{"text":"And I quote, \"Hello world!\""}]';
$query = "INSERT INTO table (json_column) VALUES (:bind)";
$bind = array('bind' => $json_string);
Проблема в том, что строка JSON не заключена в двойные кавычки.
Я понимаю, что стандарт SQL должен интерпретировать обратную косую черту как буквальные символы, и в моей базе данных postgresql стандартные_конформные_строки включены (как и должно быть). Я понимаю, что если бы я использовал литеральную строку в запросе, я мог бы использовать формат E'[{"text":"And I quote \"Hello world!\""}]', и postgresql интерпретировал бы обратную косую черту как escape-символы. Но я привязываю значения в PHP.
Итак, как я могу заставить postgresql интерпретировать обратную косую черту как escape-символы в связанном значении? Я попробовал E:bind, но получил ошибку "столбец e$1 не существует".
Приложение, с которым я работаю, использует MDB2. Я считаю, что проблема, по-видимому, заключается в том, что все работает с использованием PDO.






вам следует рассмотреть возможность использования функций pgsql
prepare, которые позволяют вам указать нужную строку, а библиотека pgsql будет экранировать строку при вызове метода, подобногоbindParameter.