Re: DB:: query versus prepare
| From: | Martin Marques | Date: | Fri, 16 Jan 2004 21:57:37 +0000 |
| Subject: | Re: DB:: query versus prepare | ||
| References: | 1 | Groups: | php.pear.general |
| Request: | Send a blank email to pear-general+get-10194@lists.php.net to get a copy of this message | ||
Mensaje citado por Ross Becker <rbecker@extremenetworks.com>:
> I've RTFM on the DB:: class, but I'm running into a problem using it.
>
> I'm attempting to do an update in an SQL table. If I use "prepare",
> everything works fine. If I use "query", it does not appear to bind the
> variables into the statement.
>
> WORKS:
> $sql = "update testdb_user_levels set " .
> "level_number = ?, level_desc = ? where level_id = ?";
> $sth = $dbh->prepare( $sql );
> $result = $dbh->execute( $sth, array( $level_number, $level_desc,
> $level_id ) );
> if (DB::isError($result))
> .
> .
>
>
> FAILS:
> $sql = "update testdb_user_levels set " .
> "level_number = ?, level_desc = ? where level_id = ?";
> $result = $dbh->query( $sql, array( $level_number, $level_desc,
> $level_id ) );
> if (DB::isError($result))
You need more knowledge on what is a prepared query.
Short: When you use $db->query($sql) you are executing the query all together,
without preparation, so you can't use "?" for a later execution. Remember that
when you do a $db->execute() you are giving values for all the "?" you put in the
prepare statement.
--
select 'mmarques' || '@' || 'unl.edu.ar' AS email;
---------------------------------------------------------
Martín Marqués | Programador, DBA
Centro de Telemática | Administrador
Universidad Nacional
del Litoral
---------------------------------------------------------