num_rows für PDO?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • num_rows für PDO?

    Hab mich nun ein bisschen mit PDO beschäftigt, so weit sehr nett. Jedoch scheint PDO kein mysql_num_rows zu haben.

    PDOStatement->rowCount() funktioniert angeblich nicht mit SELECT Abfragen, und im PHP manual wird auch nur SELECT COUNT(*) in verbindung mit PDOStatement->fetchColumn() vorgeschlagen.

    Hat jemand eine schönere alternative anstatt SELECT COUNT(*)?

    Edit:
    Es geht mir in erster Linie darum das Login Tutorial von mrhappiness PDO tauglich zu machen. Besonders bei dieser Funktion wo mysql_num_rows verwendet wird.
    PHP-Code:
    function check_user($name$pass)
    {
        
    $sql="SELECT UserId
        FROM users
        WHERE UserName='"
    .$name."' AND UserPass=MD5('".$pass."')
        LIMIT 1"
    ;
        
    $resultmysql_query($sql) or die(mysql_error());
        if ( 
    mysql_num_rows($result)==1)
        {
            
    $user=mysql_fetch_assoc($result);
            return 
    $user['UserId'];
        }
        else
            return 
    false;

    Zuletzt geändert von Londrag; 27.03.2008, 18:36.

  • #2
    If the last SQL statement executed by the associated PDOStatement was a SELECT statement, some databases may return the number of rows returned by that statement. However, this behaviour is not guaranteed for all databases and should not be relied on for portable applications.
    Hast du das Verhalten des MySQL-Treibers dazu mal ausprobiert? Ich glaube es gibt keine numRows-Methode, weil dies nicht von jeder Datenbank unterstützt wird. Afaik verwendet Oracle zum Beispiel einen vorwärts laufenden Cursor, so dass die Datenzahl zu Beginn nicht bekannt ist.
    Du verwendest in deiner Query da aber ein LIMIT 1, so dass auf jedenfall 0 oder 1 Datensatz zurückgegeben wird. Das kannst du ganz einfach abfangen, indem du überprüfst, ob dir fetch false zurückgibt!

    Edit: Da die Benutzer-ID eh nicht als Integer zurückgegeben wird, kannst du auch direkt das Ergebnis von fetchColumn( 0 ) zurückgeben!

    Kommentar

    Lädt...
    X