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

    mysql_fetch_assoc() expects parameter 1 to be resource, boolean given

    Ho il seguente codice che non riesco a sistemare:

    Codice PHP:
    // $data_val è un vettore
            
    if (count($data_val) > 0)
            {    
                
    $sql_liste_lv3 =  
                  
    "INSERT INTO Liste_lv3 (fk_user, fk_liste_lv2, fk_esercizio, fk_user_i, data_i) VALUES ";
                  for (
    $i 0$i sizeof($data_val); $i++)
                  {  
                     if (
    $i 0)
                        
    $sql_liste_lv3 .= ", ";
                    
                     
    $sql_liste_lv3 .=
                     
    "($fk_trainer, " $data_val[$i] . ", 0, $fk_trainer, '$data_now')";
                  }
                  
    $sql_liste_lv3 .= ";";
                 echo 
    $sql_liste_lv3;        
                
    $result_liste_lv3 mysql_query($sql_liste_lv3) or die("Query non valida: " mysql_error());
                
    $row_liste_lv3 mysql_fetch_assoc($result_liste_lv3);
            } 
    L'echo della terzultima riga l'ho messo per capire se ci fosse un errore nella ricostruzione della query, ma oltre a stampare la query (corretta) dà questo popò di errore:

    INSERT INTO Liste_lv3 (fk_user, fk_liste_lv2, fk_esercizio, fk_user_i, data_i) VALUES (8, 2, 0, 8, '2020-01-27 19:16:05'), (8, 12, 0, 8, '2020-01-27 19:16:05');<br />
    <font size='1'><table class='xdebug-error xe-warning' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\Program Files (x86)\Ampps\www\my_pl\php\query.php on line <i>2377</i></th></tr>
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0088</td><td bgcolor='#eeeeec' align='right'>726192</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\Program Files (x86)\Ampps\www\my_pl\php\query.php' bgcolor='#eeeeec'>...\query.php<b>:</b>0</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0200</td><td bgcolor='#eeeeec' align='right'>785632</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.mysql-fetch-assoc' target='_new'>mysql_fetch_assoc</a>
    ( )</td><td title='C:\Program Files (x86)\Ampps\www\my_pl\php\query.php' bgcolor='#eeeeec'>...\query.php<b>:</b>2377</td></tr>
    </table></font>

    All'interno del testo, c'è l'errore "mysql_fetch_assoc() expects parameter 1 to be resource, boolean given" alla linea 2377, a quella linea abbiamo la riga di codice "$row_liste_lv3 = mysql_fetch_assoc($result_liste_lv3);"

    Inoltre, i dati vengono scritti correttamente nel database.

    Grazie.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Tutta la parte dell'errore non è stampata dal tuo echo, prova a togliere l'echo, vedrai che esce ugualmente.
    Di solito l'errore in questione significa che l'esecuzione della query non è andata a buon fine.
    Prendi la query che stampi con l'echo
    codice:
    INSERT INTO Liste_lv3 (fk_user, fk_liste_lv2, fk_esercizio, fk_user_i, data_i) VALUES (8, 2, 0, 8, '2020-01-27 19:16:05'), (8, 12, 0, 8, '2020-01-27 19:16:05');
    e prova ad eseguirla a mano sul DB tramite phpMyAdmin, vedi che dice.

    Ad ogni modo, le funzioni mysql_ sono state abbandonate dall'uscita di PHP7, continuare ad usarle è un suicidio.

  3. #3
    Ho tolto l'echo e il messaggio compare lo stesso.
    Ho preso la query e l'ho eseguita su phpmyadmin: la query viene eseguita normalmente senza error senza warning.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Sei sicuro che la connessione al DB abbia avuto successo? Hai selezionato il DB?

    Ti ripeto il consiglio: smetti di usare le funzioni mysql_ passa almeno alle mysqli_ (con la i finale), meglio se passi a PDO, continuare ad usare una cosa abbandonata non è per niente una buona idea, appena verrà aggiornata la versione di PHP non funzionerà più niente.

  5. #5
    Sì, sono connesso correttamente al db, prima di quella query ne eseguo delle altre e non mi danno problemi.

    Riguardo al consiglio che mi hai dato, sì grazie passerò alle nuove funzioni php7 (ci vorrà del tempo per riscrivere tutto), attualmente che rischi corro nell'utlizzare le vecchie funzioni?

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Corri il rischio che se avevano qualche bug, nessuno li correggerà.
    Corri il rischio che se l'applicazione su cui stai lavorando è su un server non gestito da te o andrà messo su un server simile quando avrai finito, in caso questo server passi a PHP7 la tua appliczione smetterà di funzionare perché su PHP7 le funzioni mysql_ non esistono più e da PHP >=5.6 generano degli warning per avvisarti che sono state deprecate.
    In realtà anche se il server lo gestisci tu, prima o poi dovrai passare a PHP7 perché le versioni precedenti non saranno più supportate ed un server con versioni di software abbandonate è esposto ad attacchi.
    Ultima modifica di Alhazred; 28-01-2020 a 13:36

  7. #7
    Ok grazie mille.
    Riguardo ora al mio problema, cosa posso fare?

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Ma... scusa, tu stai eseguendo una INSERT cosa ti aspetti in ritorno? Non è una SELECT che ti restituisce i risultati della ricerca, la INSERT ti dice solo true se il record viene inserito, false se non viene inserito, non puoi eseguire un fetch sul risultato.

    Altra cosa, PHP dovrebbe non consentire inserimenti multipli, quindi se i record non vengono inseriti devi eseguire 2 query distinte.
    Ultima modifica di Alhazred; 28-01-2020 a 15:06

  9. #9
    Hai ragione, faccio un fetch che non c'entra nulla. Grazie mille.
    Ultima modifica di valerio.risa; 28-01-2020 a 16:50

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 © 2024 vBulletin Solutions, Inc. All rights reserved.