PHP: PDO->query() - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

PDO->quote() PDO->prepare()

Last updated: Sat, 27 Jan 2007

view this page in

# PDO->query()

(no version information, might be only in CVS)

PDO->query() -- Executes an SQL statement, returning a result set as a PDOStatement object

## Описание

class PDO {
PDOStatement query ( string statement )
}class PDO {
bool query ( string statement, int PDO::FETCH_COLUMN, int colno )
}class PDO {
bool query ( string statement, int PDO::FETCH_CLASS, string classname, array ctorargs )
}class PDO {
bool query ( string statement, int PDO::FETCH_INTO, object object )
}

PDO->query() executes an SQL statement in a single function call, returning the result set (if any) returned by the statement as a PDOStatement object.

For a query that you need to issue multiple times, you will realize better performance if you prepare a PDOStatement object using PDO->prepare() and issue the statement with multiple calls to PDOStatement->execute().

If you do not fetch all of the data in a result set before issuing your next call to PDO->query(), your call may fail. Call PDOStatement->closeCursor() to release the database resources associated with the PDOStatement object before issuing your next call to PDO->query().

> Замечание: Although this function is only documented as having a single parameter, you may pass additional arguments to this function. They will be treated as though you called PDOStatement->setFetchMode() on the resultant statement object.

## Список параметров

`statement`

  The SQL statement to prepare and execute.

## Возвращаемые значения

PDO->query() returns a PDOStatement object.

## Примеры

Пример 1. Demonstrate PDO::query

A nice feature of PDO->query() is that it enables you to iterate over the rowset returned by a successfully executed SELECT statement.

`<?php
function getFruit($conn) {
$sql = 'SELECT name, colour, calories FROM fruit ORDER BY name';
foreach ($conn->query($sql) as $row) {
print $row['NAME'] . "\t";
print $row['COLOUR'] . "\t";
print $row['CALORIES'] . "\n";
}
}
?>`

Результат выполнения данного примера:

    apple   red     150
    banana  yellow  250
    kiwi    brown   75
    lemon   yellow  25
    orange  orange  300
    pear    green   150
    watermelon      pink    90

## Смотрите также

PDO->exec()
PDO->prepare()
PDOStatement->execute()

add a note User Contributed Notes
PDO->query()
ts at tpdada dot art dot pl
24-Jan-2007 09:17
`Look out for re-using this same variable for PDOStatement twice. You should always clear it if you want use it again.
<?php
/* WRONG */
$oPDO = new PDO();
$oPDOStatement = $oPDO->query('SELECT something');
/* making something with $oPDOStatement, i.e. fetch() */
$oPDOStatement = $oPDO->query('SELECT something completly different');
/* and now $oPDOStatement is unuseful, fetch() doesn't returns result etc. */
?>
But...
<?php
/* GOOD */
$oPDO = new PDO();
$oPDOStatement = $oPDO->query('SELECT something');
/* making something with $oPDOStatement, i.e. fetch() */
/* and destroy poor, little object as we had used it */
$oPDOStatement = null;
$oPDOStatement = $oPDO->query('SELECT something completly different');
/* and everything works fine */
?>`
jonmsawyer at gmail dot com
23-Jan-2007 12:03
`@ dozoyousan at gmail dot com
> 03-May-2006 05:26
> > When query() fails, the boolean false is returned.
>
> I think that is "Silent Mode".
> If that set attribute ErrorMode "Exception Mode"
> then that throw PDOException.
> $pdoObj = new PDO( $dsn, $user, $pass );
> $pdoObj->setAttribute("PDO::ATTR_ERRMODE",
> PDO::ERRMODE_EXCEPTION);
What you say is correct, however, your PHP code is incorrect:
<?php
// This is fine
$pdoObj = new PDO( $dsn, $user, $pass );
// This line is wrong
$pdoObj->setAttribute("PDO::ATTR_ERRMODE", PDO::ERRMODE_EXCEPTION);
// It should be:
$pdoObj->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Parameter 1 should not be in quotes. PHP interprets
// that as a string. Instead, internally, its represented
// as type LONG INT. Try it :)
?>
Hope this helps. Cheers.`
yannikh at gmeil dot com
28-Oct-2006 02:47
`@E. Rnie:
The example DOES work fine.
query returns in iterable object. print_r just does not show that!
Ich you use fetchAll() you will receive an Array with all rows. Of course this works too, but it is not a good idea on big resultsets.`
E. Rnie
22-May-2006 06:36
`the above example does not function well...
it just returned
(
[queryString] => "SELECT * FROM...."
)
with a trailing ->fetchAll() everthing is working fine...
the complete correct line:
foreach ($conn->query($sql)->fetchAll as $row) {
.
.
.`
dozoyousan at gmail dot com
02-May-2006 10:26
`> When query() fails, the boolean false is returned.
I think that is "Silent Mode".
If that set attribute ErrorMode "Exception Mode"
then that throw PDOException.
$pdoObj = new PDO( $dsn, $user, $pass );
$pdoObj->setAttribute("PDO::ATTR_ERRMODE", PDO::ERRMODE_EXCEPTION);`
Nicolas Bérard Nault
05-Mar-2006 03:03
`When query() fails, the boolean false is returned.`
add a note
PDO->quote() PDO->prepare()

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 10:36:09 2007 PST