В postgresql отсутствует поддержка запросов к параметризу - PullRequest
2 голосов
/ 04 ноября 2011

Мне не удалось узнать, просматривая Google.Поэтому я решил спросить здесь.Поддерживается ли параметризованный запрос в Postgre с использованием PHP pdo?

Если нет.Как я могу достичь такой же безопасности?

Обратите внимание, что безопасность, таким образом, доказательство инъекции является абсолютной необходимостью.Использование другой базы данных не является опцией в качестве sidenote.

В ответе Фонини;

Параметризованные запросы, например, так:

     $st = $db->prepare(
         "insert into vendors set
         first_name = :first_name,
         last_name = :last_name"
     );
     $st->execute(array(
         ':first_name' => $vendor->first_name,
         ':last_name' => $vendor->last_name
     ));

без использования bindParam

Для меня это не вставка.

Мой код выглядит так:

$project = new Project();
$project->id = 'sequence string';
$project->projectName = 'A project name';

$project->saveProject();

и в модели проекта:

public function saveProject() {
    $this->_db->query("INSERT INTO projects VALUES (:id,:projectName)", array(':id' => $this->_projectFields['id'], ':projectName' => $this->_projectFields['projectName']))->save();

} ​​

метод запроса в моем классе db помещает запрос в приватное поле $ _query, а параметр aray - в приватное поле $ _parameters.Затем я вызываю метод save, который подготавливает оператор, передавая $ this -> _ query в качестве параметра для PDO :: prepare (), а затем вызываю PDO :: execute, передавая $ this -> _ параметры в качестве параметра.Не удается вставить

Ответы [ 2 ]

5 голосов
/ 04 ноября 2011

Да, параметризованные запросы отлично работают с PHP PDO.

$db = new PDO('pgsql:host=localhost;dbname=cars', 'user', 'password');

$cars = $db->prepare('SELECT * FROM cars WHERE id = :id');
$cars->bindParam(':id', $id = 20, PDO::PARAM_INT);
$cars->execute();

$result = $cars->fetch();
echo 'Name: ' . $result['name'];
2 голосов
/ 04 ноября 2011

Существует несколько способов передачи значений вместо построения оператора SQL с текстовым представлением значений.

Подготовленные высказывания , скорее всего, то, о чем вы думаете.

Вы также можете создавать функции ("хранимые процедуры") и передавать значения в качестве параметров.

Вот связанный ответ на связанный вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...