• User

    Resource id #4...ceh vuol dire?!?

    Cosa vuol dire "Resource id #4" contenuto nella varibile risultato di una query?!?
    Per caso indica che la query non ha fornito alcun risultato?!? :arrabbiato:


  • User

    Cosa vuol dire "Resource id #4" contenuto nella varibile risultato di una query?!?
    Per caso indica che la query non ha fornito alcun risultato?!? :arrabbiato:


  • User Attivo

    Vuol dire che quello che stai cercando di stampare non e' una variabile, un array o un oggetto. Probabilmente la query per ottenere i risultati non e' completa. Se posti la porzione di codice incriminata con la query possiamo aiutarti meglio.


  • User Attivo

    Vuol dire che quello che stai cercando di stampare non e' una variabile, un array o un oggetto. Probabilmente la query per ottenere i risultati non e' completa. Se posti la porzione di codice incriminata con la query possiamo aiutarti meglio.


  • User Attivo

    E' giusto che si a così, stai stampando probabilmente un array.

    La query è giusta ed il suo risultato si trova all'interno del set dei risultati che cerchi di stampare.

    Anzicchè stamparla devi prima passarla per esempio in una funzione sql_fetch_row($set_result)


  • User Attivo

    E' giusto che si a così, stai stampando probabilmente un array.

    La query è giusta ed il suo risultato si trova all'interno del set dei risultati che cerchi di stampare.

    Anzicchè stamparla devi prima passarla per esempio in una funzione sql_fetch_row($set_result)


  • User Newbie

    Ciao a tutti. Io ho lo stesso curioso problema. Tuttavia, non sono riuscito a trovare la soluzione. O meglio, l'ho trovata in parte collegandomi a PHP.net.
    Infatti, nella stampa non ottengo più "resource #9", bensì un semplice 1!!!
    Ma vado con ordine. In un forum basato su SMF voglio visualizzare gli ultimi post di Wordpress. D'altra parte non volevo un bridge. Mi sono limitato a integrare il tema e a inserire - appunto - gli ultimi post dal blog.
    Orbene, ho modificato il template e ho inserito il codice php per eseguire le query. Tutto bene se non fosse per quel fastidioso resource, che poi è diventato un semplice 1.
    Vi posto il codice. Spero in qualche dritta. Premetto che non sono esperto in php. Vi ringrazio per la spiegazione.

    
    
    // connection to wordpress database 
    $link = mysql_connect('localhost', 'root', 'password')
        or die('Could not connect: ' . mysql_error());
        echo 'Connected successfully';
    mysql_select_db('root') or die('Could not select database');
    
    // Performing SQL query
    $query = 'select * FROM wp_posts WHERE post_type =\'post\' ORDER BY id desc limit 4';
    $result = mysql_query($query) or die('Query failed: ' . mysql_error());
    
    // Printing results in HTML
    echo "<div>\n";
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) 
    {
        echo "\t<li>\n";
        echo "\t\t<li><a href=\"indirizzo_blog/?p=". $line['ID'] ."\">". $line['post_title'] ."</a></li>\n";
        echo "\t</li>\n";
    }
    echo "</div>\n";
    
    // Free resultset
    mysql_free_result($result);
    
    // Closing connection
    mysql_close($link);
    //end connection
    
    
    
    

  • User

    Dove si presenta il problema? Dove viene visualizzato "1"?


  • User Newbie

    l'1 viene visualizzato sopra l'elenco dei post visualizzati.
    Allora, premetto che ho eliminato la parte relativa alla identificazione e all'autenticazione mysql, semplicemente perché smf e wordpress sono installati nel medesimo database (limitandomi perciò a richiamare il database), ho diciamo risolto, inserendo la connessione e la selezione delle tabelle all'interno dei tag head in questo modo:

    
    <head>
    ...
        echo mysql_select_db('root') or die('Could not select database');
        echo $query = 'select * FROM wp_posts WHERE post_type =\'post\' ORDER BY id desc limit 4';
        echo $result = mysql_query($query) or die('Query failed: ' . mysql_error());
    ...
    </head>
    
    

    Mentre nel body ho inserito la stampa dei risultati

    
    <body>
    ...
    "<div>\n";
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
    {
        echo "\t<li>\n";
        echo "<a href=\"indirizzoweb/wordpress/?p=". $line['ID'] ."\">". $line['post_title'] ."</a>\n";
        echo "<br/>". $line['post_date']."\n";
        echo "\t</li>\n";
    }
    echo "</div>\n";
    
    mysql_free_result($result);
    ...
    </body>
    
    

    Tuttavia non so se ho proceduto in modo corretto, sebbene il risultato sia soddisfacente. 🙂


  • User Attivo

    Ciao,

    @Jester72
    per quale motivo utilizzi l'istruzione echo in queste righe?
    [php]
    echo mysql_select_db('root') or die('Could not select database');
    echo $query = 'select * FROM wp_posts WHERE post_type ='post' ORDER BY id desc limit 4';
    echo $result = mysql_query($query) or die('Query failed: ' . mysql_error());
    [/php]
    Non credo tu abbia bisogno di visualizzare la query e il risultato (sotto forma di vero/falso, cioè 1,0 ) delle funzioni chiamate.

    Non conta nulla il fatto che siano all'interno del tag <head>.
    Queste tre righe di codice, a cui va tolta l'istruzione echo, puoi inserirle in qualsiasi punto purchè siano:

    • dopo la connessione a mysql
    • prima della riga con l'istruzione mysql_fetch_array relativa al risultato che stai elaborando

    **@axlpx81 **

    Quando esegui una query con, ad esempio, mysql_query:
    [php]
    $result=mysql_query($sql);
    [/php]
    la variabile $result in caso di successo è una variabile booleana con valore vero per le query di iserimento, update, cancellazione, etc... (ovvero per le query che non forniscono un set di risultati), mentre per le query di tipo SELECT, SHOW, Explain, etc.. (ovvero per le query che forniscono un set di risultati) è una variabile di tipo "resource" che identifica l'ID della risorsa esterna corrispondente.
    In entrambi i casi, assume valore false quando viene riscontrato un errore.

    Fare echo $result è errato e non ti visualizza gli eventuali dati letti dal database.

    Per visualizzare i dati recuperati tramite la query devi utilizzare altre funzioni come *mysql_fetch_array, mysql_fetch_assoc, *mysql_result, etc.. come ti è stato indicato nelle risposte precedenti.

    Alessandro


  • User Newbie

    @Magicale said:

    Ciao,

    @Jester72
    per quale motivo utilizzi l'istruzione echo in queste righe?
    [php]
    echo mysql_select_db('root') or die('Could not select database');
    echo $query = 'select * FROM wp_posts WHERE post_type ='post' ORDER BY id desc limit 4';
    echo $result = mysql_query($query) or die('Query failed: ' . mysql_error());
    [/php]Non credo tu abbia bisogno di visualizzare la query e il risultato (sotto forma di vero/falso, cioè 1,0 ) delle funzioni chiamate.

    Non conta nulla il fatto che siano all'interno del tag <head>.
    Queste tre righe di codice, a cui va tolta l'istruzione echo, puoi inserirle in qualsiasi punto purchè siano:

    • dopo la connessione a mysql
    • prima della riga con l'istruzione mysql_fetch_array relativa al risultato che stai elaborando

    Ciao Alessandro! 🙂
    Allora, in effetti l'istruzione non serviva a nulla, e di fatti l'avevo già tolta ieri sera. Ho lasciato comunque il codice all'interno dei tag head più che altro per una questione di ordine e comodità.
    Piuttosto, ieri mi faceva un altro problema: le istruzioni relative alle statistiche e dei membri di SMF non funzionavano, perché collegandomi a un altro database rispetto a quello in cui è installato il forum, l'istruzione richiedeva la tabella dei membri di SMF. Ho risolto il problema installando wordpress nello stesso database di SMF.
    Grazie comunque per l'interessante dritta. 😉