I am new to PDO objects and cannot find a single piece of documentation that will help me. Say I got a simple code to delete a row:
$count = $dbh->exec("DELETE FROM fruit WHERE colour = 'red'");
That will return affected rows, but how would I use prepared statements with that? Can use use $dbh->prepare
AND $dbh->exec
or query !?
-
$dbh->prepare
returns aPDOStatement
object. You then call$stmt->execute
to get the result.Here's an example from the manual:
<?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)); ?>
John : But how would I return number of rows affected? Can I use it like in my example, `$count = $stmt->execute`? EDIT: someone else answered it. -
It should be the same as any other statement:
$stmt = $dbh->prepare("DELETE FROM fruit WHERE colour = ?"); $stmt->execute(array('red')); $count = $stmt->rowCount();
The PDO Statement rowCount() should be what you are looking to do.
EDIT
Fixed by adding the
->rowCount()
which will return the row count.->execute
in a statement will return abool
,true
orfalse
whether the query errored out or not. Of course all of this information is readily available at the PDO Statement ManualJohn : So `->execute` can return affected rows too, this is exactly what I needed. Thank you!Brad F Jacobs : No, I had an error before. The manual states that `->execute` returns a bool, but looking at the other functions in the manual, `->rowCount()` will provide the count.John : This would fit my code perfectly, and makes a lot more sense with the `->rowCount()` function in the end. Thanks again.
0 comments:
Post a Comment