Проблемы с pg_query(); в php

В настоящее время я использую Postgres с PHP. Я пишу интерфейс, в котором пользователь может ввести пользователя, чтобы он добавлялся к общему количеству пользователей в базе данных. (Очень простой).

В последнее время у меня было много проблем с тем, чтобы заставить запросы работать. Убегать, кажется, требуется все время. Просто самого запроса между двойными кавычками уже недостаточно.

У меня возникли проблемы со следующим запросом;

$query = pg_query($dbconnection,"INSERT INTO clients('clientid', 'name', 'ipaddress',     'status') VALUES ('$clientid', '$name', '$ipaddress', '$status' ");

Это не работает. Думаю, нужно больше убегать. Есть ли какой-либо сторонний инструмент для проверки правильности этих синтаксисов postgres?

Если нет, то как я могу точно превратить этот запрос в пригодный для использования?


person MichaelP    schedule 10.10.2013    source источник


Ответы (3)


Используйте pg_query_params() для обработки экранирования и предотвращения внедрения SQL:

$query = pg_query_params(
  $dbconnection,
  'INSERT INTO clients(clientid, name, ipaddress,status) VALUES ($1, $2, $3, $4);', // placeholders
   array($clientid, $name, $ipaddress, $status) // content
);
person Frank Heikens    schedule 10.10.2013

$query = pg_query($dbconnection, "INSERT INTO clients(clientid, name, ipaddress,status) VALUES ('$clientid', '$name', '$ipaddress', '$status')");

должен делать работу. Обратите внимание на отсутствие кавычек вокруг имен полей и закрывающей скобки после VALUES.

person TheWolf    schedule 10.10.2013

person    schedule
comment
Было бы полезно предположить, почему вы думаете, что это решит проблему. - person Steve; 10.10.2013