Ankündigung

Einklappen
Keine Ankündigung bisher.

mysqli_num_rows auf Wert prüfen

Einklappen

Neue Werbung 2019

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

  • mysqli_num_rows auf Wert prüfen

    Hallo

    Ich habe ein Script, das ich schon auf vielen Servern unterschiedlicher Anbieter laufen hatte. Jetzt habe ich das erste mal ein Problem damit.

    PHP-Code:
    final class DBMySQLi {
        private 
    $link;

        public function 
    __construct($hostname$username$password$database) {
            
    $this->link = new mysqli($hostname$username$password$database);

            if (
    mysqli_connect_error()) {
                throw new 
    ErrorException('Error: Could not make a database link (' mysqli_connect_errno() . ') ' mysqli_connect_error());
            }

            
    $this->link->set_charset("utf8");
        }

        public function 
    query($sql) {
            
    $query $this->link->query($sql);
            if (!
    $this->link->errno){
                if (isset(
    $query->num_rows)) {
                    
    $data = array();

                    while (
    $row $query->fetch_assoc()) {
                        
    $data[] = $row;
                    }

                    
    $result = new stdClass();
                    
    $result->num_rows $query->num_rows;
                    
    $result->row = isset($data[0]) ? $data[0] : array();
                    
    $result->rows $data;

                    unset(
    $data);

                    
    $query->close();

                    return 
    $result;
                } else{
                    return 
    true;
                }
            } else {
                throw new 
    ErrorException('Error: ' $this->link->error '<br />Error No: ' $this->link->errno '<br />' $sql);
                exit();
            }
        } 
    Das ist die originale Version, die eigentlich immer geht.

    Das Problem liegt in der Funktion query
    PHP-Code:
    if (isset($query->num_rows)) { 
    Der neue Server kommt irgendwie mit dem isset($query->num_rows) nicht klar. Obwohl ein Wert vorhanden ist, gibt mir isset false aus.

    PHP-Code:
    $query $this->link->query($sql);
            
    var_dump($query->num_rows);
            
    var_Dump(isset($query->num_rows)); 
    Code:
    int(53) 
    bool(false)
    Ich habe leider keine Ahnung, woran das liegen kann. Auf jedem anderem Server läuft es.
    Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.


  • #2
    PHP-Code:
    $query $this->link->query($sql);
            
    var_dump($query->num_rows); //53
            
    var_dump(isset($query->num_rows));  // false
            
    $num_rows $query->num_rows;
            
    var_dump($num_rows);    //53, I guess
            
    var_dump(isset($num_rows));    // true 
    isset() prüft Variablen, du gibst ihm aber den Aufruf von einer Methode


    Wobei mich natürlich überrascht, dass das dann auf anderen Servern einfach so funktioniert, kann also gut sein, dass es was anderes ist
    Relax, you're doing fine.
    RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

    Kommentar

    Lädt...
    X