Visualizzazione risultati 1 fino 13 di 13

Discussione: [ MySqli ] Estrazione dati!

  1. #1
    Guest

    Predefinito [ MySqli ] Estrazione dati!

    Ragazzi sto cercando di estrarre dei dati dal database, ma non ci riesco per niente! Sarà anche semplice questo mysqli, ma io non riesco proprio ad entrarci!!! Allora, ecco il codice che uso:

    Codice PHP:

    <?php
    include_once("config/config.inc.php");
    $db = new Database; // Avvio la connessione al Database
    ?>
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title><?php echo Info::Sitename . " - " . Info::Version; ?></title>
    </head>

    <body>
    <?php

    $query
    = "SELECT * FROM table.users";
    $result = $db->query($query);

    /* associative array */
    $row = $result->fetch_array(MYSQLI_ASSOC);
    printf ($row["name"], $row["surname"]);
    ?>
    </body>
    </html>
    <?php
    $db
    ->close();
    ?>
    Mi dice:
    Codice PHP:
    Fatal error: Call to a member function fetch_array() on a non-object in /membri/ernestocampese/index.php on line 27

  2. #2
    Guest

    Predefinito

    Prova così:
    Codice PHP:
    $query='SELECT * FROM tabella)';
    $result= $db->query($query);
    while(
    $row= mysqli_fetch_array($result, MYSQLI_ASSOC)){
    echo
    $row['name']." ".$row['surname']);
    }
    }
    In questo caso ti stampa tutti i valori, nel caso in cui volessi stampare solo, per esempio, il campo "name" che ha come valore "topolino" basta inserire dentro il ciclo una condizione del tipo:
    Codice PHP:
    if($row['name']=="topolino"){
    }
    Per saperne di più e adattarlo alle tue esigenze potresti guardare la guida ufficiale o anche quest'altra pagina della guida ufficiale.

    Fammi sapere..

  3. #3
    Guest

    Predefinito

    Solo che io vorrei utilizzare i dati anche fuori dal ciclo while! Come succedeva per mysql, che fetchavo i dati e poi bastava richiamare la variabile che contenvea l'array e tra parentesi quadre inserire il nome del record che mi interessa.

  4. #4
    Guest

    Predefinito

    Hai letto le guide che ti ho linkato?

  5. #5
    Guest

    Predefinito

    Si le ho lette, infatti è in base a quelle che ho scritto il codice del mio primo post, ma mi da il fatal error.

  6. #6
    Guest

    Predefinito

    Potresti provare a stampare il contenuto di $result, nel caso in cui dovesse stamparti qualcosa di anomalo o niente l'errore è li.
    Credo dovresti assicurarti della correttezza dell'oggetto $db.
    Non so cosa contiene il file config.inc ma dovresti passare come parametro i dati della connessione:
    Codice PHP:
    $connect = new mysqli("localhost","ernestocampese","password","my_ernestocampese");
    [...]
    $result = $connect->query($query);
    Fammi sapere..

  7. #7
    Guest

    Predefinito

    Grazie mathis per l'assistenza, ho lanciato il $db->error; guarda tu stesso cosa esce:
    http://ernestocampese.altervista.org/

    SELECT command denied to user 'ernestocampese'@'localhost' for table 'users'
    In pratica c'è un errore con i permessi del mio utente o.o

    File config:
    Codice PHP:
    <?php
    // Classe per la connessione al database mysql
    class Database extends mysqli {

    // Proprietà del Database: Dati di accesso!
    const HOST = "localhost";
    const
    USER = "ernestocampese";
    const
    PASS = "???????????????";
    const
    DB = "my_ernestocampese";

    // Metodo per la connessione al database
    public function __construct() {
    // Richiamo il costruttore della classe mysqli
    $mysqli = parent::__construct(self::HOST, self::USER, self::PASS, self::DB);
    // Effettuo un controllo sulla connessione
    if ($mysqli->connect_errno) {
    die(
    "Connessione Fallita: " . $mysqli->connect_error);
    }

    return
    $mysqli;
    }

    // Metodo per l'estrazione dei dati


    }

    ?>
    Pagina index:

    Codice PHP:
    <?php
    include_once("config.inc.php");
    $db = new Database; // Avvio la connessione al Database
    ?>
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title><?php echo Info::Sitename . " - " . Info::Version; ?></title>
    </head>

    <body>
    <h1><?php echo Info::Sitename . " - " . Info::Version; ?></h1>
    <h2>Benvenuto su <?php echo Info::Sitename; ?>, attraverso il menù potrai effettuare molte operazioni, accedi o registrati per visualizzare il tuo pannello gestionale.</h2>
    <h3>Menu di navigazione</h3>
    <ul>
    <li><a href="pages/login.php">Accedi</a></li>
    <li><a href="pages/register.php">Registrati</a></li>
    <li><a href="pages/contactus.php">Contattaci</a></li>
    <br>
    <?php

    $query
    = "SELECT * FROM table.users WHERE id = '1'";
    $result = $db->query($query);
    echo
    $db->error;
    /* associative array */
    $row = $result->fetch_array(MYSQLI_ASSOC);
    echo
    $row["name"];
    ?>
    </ul>
    </body>
    </html>
    <?php
    $db
    ->close();
    ?>

  8. #8
    Guest

    Predefinito

    L'errore comunque indica che non viene passato un oggetto e per questo pensavo potessi controllare con var_dump().
    Ma visto l'output di errore penso che l'errore sia nella tabella della tua query.
    Il nome della tabella è users?
    Comunque per fare WHERE id='1' dovresti scrivere così:
    Codice PHP:
    $query = "SELECT id FORM users WHERE id ='1'";
    O potresti provare così:
    Codice PHP:
    $query = ("SELECT * FROM users");

    while (
    $row = mysqli_fetch_assoc($query))
    {
    $tabella['id'] = $row;

    }
    Scusa se non sono molto chiaro ma non sono in forma con 38 di febbre
    Ultima modifica di mathis : 15-09-2013 alle ore 01.00.09

  9. #9
    Guest

    Predefinito

    No, si chiama table.users. Ho provato così, mi da bool(false)
    Codice PHP:
    <?php

    $query
    = "SELECT * FROM table.users WHERE id = '1'";
    $result = $db->query($query);
    echo
    "<br>" . var_dump($result);
    ?>
    Ma quello che mi turba è l'errore di prima... quello sull'accesso negato. Mah!

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,786

    Predefinito

    Penso non puoi chiamare una tabella con un punto, perché la parte prima del punto si riferisce al nome del database; quello dopo invece al nome della tabella. Quindi stai cercando di accedere ad un database (probabilmente inesistente) a cui non puoi accedere.

    Ciao!
    Ultima modifica di alemoppo : 15-09-2013 alle ore 01.27.17

  11. #11
    Guest

    Predefinito

    VERO! L'errore dei permessi era legato al nome, che stupido che sono, ho sostituito con il trattino basso. Grazie ragazzi, grazie dell'aiuto, in particolare a mathis che nonostante la febbre mi è stato dietro. grazie anche a te alemoppo per la soluzione. GJ Guys! :)
    Ultima modifica di ernestocampese : 15-09-2013 alle ore 01.37.14

  12. #12
    Guest

    Predefinito

    Forse leggermente OT
    Mi fa piacere che hai risolto comunque quando ho detto:
    Citazione Originalmente inviato da mathis Visualizza messaggio
    Ma visto l'output di errore penso che l'errore sia nella tabella della tua query.
    Il nome della tabella è users?
    Intendevo proprio questo, il fatto che non potevi dare un nome di quel tipo alla tabella

  13. #13
    Guest

    Predefinito

    Ahahha hai ragione, grazie caro

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •