Visualizzazione risultati 1 fino 3 di 3

Discussione: Connessione al database

  1. #1
    Guest

    Question Connessione al database

    Salve a tutti,
    Ho un database di classe 2 su cui ho deciso di lavorare.
    Ho creato una tabella, aggiunto qualche recordo, ed è tutto ok.
    Per connettermi e fare la query che mi serve uso questo codice:
    Codice PHP:
    $dbconnection = mysql_pconnect('localhost', 'nome', '');
    mysql_select_db('my_nome', $dbconnection) or error();
    $query_result = mysql_query("SELECT id, name, description, count FROM downloads WHERE type = 'program';") or error();
    while (
    $row = mysql_fetch_assoc($query_result, MYSQL_ASSOC)) {
    var_dump($row);
    }
    Il codice penso sia giusto, l'ho già usato parecchie volte senza problemi. Infatti non mi da alcun errore, ne mi richiama la funzione error().
    Il problema è che la query non trova nessun risultato, nonostante la tabella sia piena e eseguendo la stessa query da phpMyAdmin funziona e mi restituisce quei tot risultati.
    Cosa sto sbagliando?

  2. #2
    Guest

    Predefinito

    error() è una funzione che non mi pare presente nel core di php, onestamente credo sia quello il problema che ti impedisce di osservare eventuali errori di responso della query anche perchè non recuperi eventuali messaggi d'errore di mysql in quel modo. Dovresti usare una combinazione di die() e mysql_error().

    Secondariamente c'è un altro errore, quando usi mysql_fetch_assoc() specifichi un parametro secondario che non è previsto da quella funzione in quanto non ha diversi modi di ritornare i valori come accade invece per mysql_fetch_array().

    In ultimo, ti consiglio di liberare la memoria occupata dal recupero dei dati della query avvalendoti di mysql_free_result().


    In sostanza, prova così:
    Codice PHP:
    $dbconnection = mysql_connect('localhost', 'nome', '');
    mysql_select_db('my_nome', $dbconnection) or die(mysql_error());

    $query_result = mysql_query("SELECT id, name, description, count FROM downloads WHERE type = 'program'") or die(mysql_error());

    while (
    $row = mysql_fetch_assoc($query_result))
    {
    var_dump($row);
    }

    mysql_free_result($query_result);


    Ultime due note: ricordati a fine script di chiudere sempre la connessione col database.
    L'estensione MySql di php inoltre potrebbe essere deprecata entro le prossime release della versione 5.X di php a quanto ho letto da una newsletter interna di php.net in cui si pensava originariamente di deprecarla già dalla release 5.4, ti consiglio pertanto di passare all'uso di MySqli che, se proprio non ti entra in testa l'oop, è munita anche di una semplice componente procedurale ;-)


    Per il resto, spero di esserti stato d'aiuto :-)
    Ultima modifica di blackbos : 29-11-2011 alle ore 11.34.17

  3. #3
    Guest

    Predefinito

    Grazie mille per la risposta.
    error() è una funzione che dichiaro io nel file.
    Non credo sia il passare un altro parametro alla funzione che non la faccia andare, visto che quell'errore ho visto che l'ho fatto anche in un altro sito che però funziona (non è su Altervista).
    Passerò a mysqli, grazie per la segnalazione. E l'OOP mi entra in testa.

    EDIT: levando il secondo parametro inutile funzikna tutto correttamente, grazie :)
    Ultima modifica di ATeam : 29-11-2011 alle ore 22.10.05

Regole di scrittura

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