phpbar.de logo

Mailinglisten-Archive

[php] PDO::query();

[php] PDO::query();

Martin Spuetz mas at spuetz.ath.cx
Mit Okt 18 14:48:35 CEST 2006


Hallo Hannes,

Hannes H. wrote:
> So wie ich es verstehe, sollte mysql_query(); bei PDO durch die
> PDO::query()-Methode abgebildet werden. Aber was liefert das Teil
> zurück? Warum sind im Manual ständig foreach-Schleifen im Zusammenhang
> mit dieser Methode? 

$pdo = new Pdo(...);
$result = $pdo->query("SHOW PROCESSLIST");
foreach ($result->fetch(PDO::FETCH_ASSOC) as $field) {
    var_dump($field);
}

> Und wie kann (wie bei mysql_num_rows();) die
> Anzahl der Spalten ermitteln?

Das ist so nicht mehr ganz möglich, du kannst dir zwar noch die
affected rows (z.B. beim delete) ausgeben lassen.

Der Ersatz für mysql_num_rows() ist eine Query mit SELECT COUNT(*)
vorher abzusetzen und dann über fetchColumn() das Ergebnis holen.

> Ich glaub es ist besser, ich lass die Finger von PDO *entnervt*

Hmm...hier mal ein kleines Beispiel was man mit PDO alles machen kann:

<?php
include_once "SPdo.class.php";

$sql = "SELECT * from foo WHERE bar = ?";
$query = SPdo::getInstance()->prepare($sql);
$query->execute(array("foobar"));

foreach ($query->fetch(SPdo::FETCH_ASSOC) as $field) {
    var_dump($field);
}
?>

class SPdo extends PDO {

    static public function getInstance()
    {
        if (self::$_pdo === NULL || !is_object(self::$_pdo)) {
            $dsn = 'mysql:host=localhost;dbname=name'

            self::$_pdo = new SPdo($dsn, "username", "password");
            self::$_pdo->setAttribute(...
        ...

        return self::$_pdo;

Gruss,
Martin


php::bar PHP Wiki   -   Listenarchive