PHP / PDO: использовать простой подготовленный оператор с запросом возврата / затронутых строк? - PullRequest
4 голосов
/ 07 сентября 2010

Я новичок в объектах PDO и не могу найти ни одного документа, который мне помог бы.Скажем, у меня есть простой код для удаления строки:

$count = $dbh->exec("DELETE FROM fruit WHERE colour = 'red'");

Это вернет затронутые строки, но как мне использовать подготовленные операторы с этим?Можно использовать $dbh->prepare И $dbh->exec или запрос!?

Ответы [ 2 ]

12 голосов
/ 07 сентября 2010

Он должен совпадать с любым другим оператором:

$stmt = $dbh->prepare("DELETE FROM fruit WHERE colour = ?");
$stmt->execute(array('red'));
$count = $stmt->rowCount();

Оператор PDO rowCount () должен быть тем, что вы хотите сделать.

РЕДАКТИРОВАТЬ

Исправлено добавлением ->rowCount(), который будет возвращать количество строк.->execute в операторе вернет bool, true или false независимо от того, был ли запрос ошибочным или нет.Конечно, вся эта информация доступна в Руководстве по эксплуатации PDO

1 голос
/ 07 сентября 2010

$dbh->prepare возвращает объект PDOStatement.Затем вы вызываете $stmt->execute, чтобы получить результат.

Дополнительная информация в руководстве по PDO

Вот пример из руководства:

<?php
/* Execute a prepared statement by passing an array of insert values */
$calories = 150;
$colour = 'red';
$stmt = $dbh->prepare('SELECT name, colour, calories
                       FROM fruit
                       WHERE calories < ? AND colour = ?');
$stmt->execute(array($calories, $colour));
?>
...