PHP
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: Sun, 25 Nov 2007

view this page in

PDO->query()

(PHP 5 >= 5.1.0, PECL pdo:0.2-1.0.3)

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

Description

PDO
PDOStatement query ( string $statement )
PDO
PDOStatement query ( string $statement , int $PDO::FETCH_COLUMN , int $colno )
PDO
PDOStatement query ( string $statement , int $PDO::FETCH_CLASS , string $classname , array $ctorargs )
PDO
PDOStatement 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().

Note: 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.

Parameters

statement

The SQL statement to prepare and execute.

Return Values

PDO->query() returns a PDOStatement object.

Examples

Example#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";
    }
}
?>

The above example will output:

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



PDO->quote()> <PDO->prepare()
Last updated: Sun, 25 Nov 2007
 
add a note add a note User Contributed Notes
PDO->query()
NUNTIUS
22-Jan-2008 12:01
I found this method extremely useful for getting the iteration count. Note the usage of "for" instead of "while" or "foreach". Just place the "$row = $query->fetch()" as the second condition of your for loop (which is do until). This is the best of both worlds IMHO. Criticism welcome.

try {
    $hostname = "servername";
    $dbname = "dbname";
    $username = "username";
    $pw = "password";
    $pdo = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");
  } catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
  }
      $query = $pdo->prepare("select name FROM tbl_name");
      $query->execute();
     
      for($i=0; $row = $query->fetch(); $i++){
        echo $i." - ".$row['name']."<br/>";
      }

      unset($pdo);
      unset($query);
wuzup_13 at hotmail dot com
20-Nov-2007 12:49
This is an example PDO query function, dbQuery only needs to be passed your database query in order to work.
Our return solves the problem of not being able to count PDO returns/objects.
You can perform a count() on the return array, unless only 1 row is returned, then you will be counting columns, instead of rows.
See for yourself, I think you'll find this useful, it solved many of our problems - we have to do a bit more backend work, but such is the cost of a reasonable PDO function.

EXAMPLE:

// If you know the select statement will return only one row:
$row = dbQuery("SELECT * FROM users WHERE user_id = 1");
print $row['user_id']; // Prints one row. If more than one, will print "Array"

// If you are expecting one or more rows:
$query = dbQuery("SELECT * FROM users");
foreach ($query as $row) {
  print $row['user_id']; // Prints ALL rows
}

<?php

function dbConnect() {
  global
$dbh;

 
$dbInfo['database_target'] = "localhost";
 
$dbInfo['database_name'] = "my_db";
 
$dbInfo['username'] = "root";
 
$dbInfo['password'] = "";

 
$dbConnString = "mysql:host=" . $dbInfo['database_target'] . "; dbname=" . $dbInfo['database_name'];
 
$dbh = new PDO($dbConnString, $dbInfo['username'], $dbInfo['password']);
 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
$error = $dbh->errorInfo();
  if(
$error[0] != "") {
      print
"<p>DATABASE CONNECTION ERROR:</p>";
     
print_r($error);
  }
}

function
dbQuery($queryString) {
  global
$dbh;

 
$query = $dbh->query($queryString);
 
$i = 0;
  foreach (
$query as $query2) {
   
$queryReturn[$i] = $query2;
   
$i++;
  }
  if(
$i > 1) {
    return
$queryReturn;
  } else {
    return
$queryReturn[0];
  }
}

dbConnect(); // Connect to Database

?>
Adael
19-Nov-2007 05:23
For get one row from one query:
<?PHP
$row
= $dbh->query("SELECT * FROM customers")->fetch();
?>
fredrik at NOSPAM dot rambris dot com
05-May-2007 12:04
The handling of errors by this function is controlled by the attribute PDO::ATTR_ERRMODE.

Use the following to make it throw an exception:
<?php
$dbh
->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>
nicobn at gmail dot com
26-Apr-2007 06:29
Please note that when Query() fails, it does not return a PDOStatement object . It simply returns false.
Ravo
25-Apr-2007 10:49
I struggled with this trying to figure out why I couldn't return a single row using a simple query. This may or may be obvious but you have to use PDOstatement functions of the result of a PDO->query(). This took me a while to figure out since it is a far cry from the query functions of old.

<?php
$connection
= new pdo("sqlite:file.sq3");
$query="SELECT * FROM table";
$result = $connection->query($query);
$row = $result->fetch(PDO::FETCH_ASSOC);
print_r($row);
?>

PDO->quote()> <PDO->prepare()
Last updated: Sun, 25 Nov 2007
 
 
show source | credits | sitemap | contact | advertising | mirror sites