Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    php 5 creazione classe con msqli

    Ciao, premetto che sono agli inizi con la programmazione OO e sto facendo i primi esperimenti...il mio primo è questo:

    Codice PHP:
    <?php
    class db_select
    {
        function 
    __construct($host$user$pass$db)
        {
            
    $this->host $host;
            
    $this->user $user;
            
    $this->pass $pass;
            
    $this->db $db;
            
            
    $this->conn = new mysqli($this->host$this->user$this->pass$this->db);
        }
        
        function 
    select($sql)
        {
            
    $this->sql $sql;
            
    $this->result $this->conn->query($this->sqlMYSQLI_USE_RESULT);
            
    //$this->row;
            
    while($this->row $this->result->fetch_row())
            {
                print 
    $this->row[0]."
    \r\n"
    ;
            }
            
    $this->result->free();
            
    $this->mysqli->close();
        }
    }
    require_once 
    "conn.php"//contiene i dati per l'accesso al database
    $obj = new db_select(SQL_HOSTSQL_USERSQL_PASSSQL_DB);
    $obj->select("SELECT * FROM dati utenti");
    ?>
    il risultato è il seguente:
    Fatal error: Call to a member function fetch_row() on a non-object in C:\wamp\www\prove\db_class_01\db_select.class.php on line 19

    non capisco cosa significa questo errore?

  2. #2
    Codice PHP:
    <?php 
    class db_select 

        private 
    $host'';
        private 
    $user'';
        private 
    $pass'';
        private 
    $db'';
        public function 
    __construct($host$user$pass$db) { 
            
    $this->host $host
            
    $this->user $user
            
    $this->pass $pass
            
    $this->db $db;
            
    $this->connect(); 
        } 
         private function 
    connect(){
              
    $this->conn = new mysqli($this->host$this->user$this->pass$this->db); 
            if (
    mysqli_connect_errno()) {
                
    printf("Connect failed: %s\n"mysqli_connect_error());
                exit();
            }
        }
        public function 
    select($sql
        { 
            
    $this->sql $sql
            if(
    $this->result $this->conn->query($this->sqlMYSQLI_USE_RESULT)){ 
                while(
    $this->row $this->result->fetch_row()) { 
                    print 
    $this->row[0]."
    \r\n"

                }
                
    $this->result->close();
            } 
        } 
    }
    La query è sbagliata non può mettere
    un nome tabella con degli spazi.
    Con l'if prima del while eviti gli errori.
    se sei su php5 ti conviene usare la visibilità
    delle proprietà/metodi.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    innanzitutto grazie...ineffetti sono proprio un povero orbo...scusa ma ho letto che per le query unbuffered, oltre al $this->result->close(); bisogna mettere anche il $this->result->free(); è davvero necessario?

  4. #4
    Originariamente inviato da newscripter
    innanzitutto grazie...ineffetti sono proprio un povero orbo...scusa ma ho letto che per le query unbuffered, oltre al $this->result->close(); bisogna mettere anche il $this->result->free(); è davvero necessario?
    Non l'ho mai letto e se non mi sbaglio nel manuale non
    c'è.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    visto che usi PHP5 perchè non usi l'estenzione PDO per crearti la tua classe per gestire le chiamate al database?

    Qui trovi tutto quello che ti serve per capirne il funzionamento.

    Buon LAvoro
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.