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

    mysql_fetch_row(): supplied argument is not a valid MySQL

    Ciao a tutti

    come da titolo php mi restituisce questo warning e più precisamente alla riga:

    while ($riga = mysql_fetch_row($risultato))

    -------------------------------------------------------------------------------------
    $nome_societa = $_POST['nome_societa'];
    $partita_iva = $_POST['partita_iva'];
    $telefono_sede = $_POST['telefono_sede'];
    $proprietario = $_POST['proprietario'];

    include("connessione_db.php");

    $query = "UPDATE impresa_edile
    SET telefono_sede = '$telefono_sede',
    proprietario = '$proprietario',
    nome_societa = '$nome_societa'
    WHERE partita_iva = '$partita_iva'";

    $risultato = mysql_query($query) or die("Query fallita");


    while ($riga = mysql_fetch_row($risultato))
    {
    $partita_iva = $riga['partita_iva'];
    $nome_societa = $riga['nome_societa'];
    $telefono_sede = $riga['telefono_sede'];
    $proprietario = $riga['proprietario'];
    }


    include("disconnessione_db.php");
    -------------------------------------------------------------------------------------

    Ho letto sulla rete che è un errore molto generico ma non riesco a capire dove sbaglio..

    qualcuno saprebbe darmi una mano?
    Grazie mille

  2. #2
    Io innanzi tutto mi farei restituire l'errore da MySQL.

    Codice PHP:
    $risultato mysql_query($query
       or die(
    "Errore Numero: ".mysql_errno()." - Descrizione: ".mysql_error()); 
    Conterei anche se la query torna almeno un risultato:
    Codice PHP:
    $num mysql_num_rows($risultato);
    if(
    $num == 0) {
       echo 
    "Nessun Risultato";
    } else {
    while (
    $riga mysql_fetch_row($risultato)) {
       
    $partita_iva $riga['partita_iva'];
       
    $nome_societa $riga['nome_societa'];
       
    $telefono_sede $riga['telefono_sede'];
       
    $proprietario $riga['proprietario'];
      }
    }
    include(
    "disconnessione_db.php"); 
    Se dovesse tornare a ripresentarsi l'errore, io proverei ad usare mysql_fetch_array().
    Facci sapere.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    L'errore e' banale piu' che generico...

    Fai una query UPDATE e poi cerchi chissa' che' con mysql_fetch_row.

    Inoltre, utilizzi mysql_fetch_row() che renderebbe il result set (ma non di questa query update) in un array con indice numerico e poi cerchi i dati utilizzando l'indice associativo.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    intanto grazie mille per le risposte!!

    avete ragione tutti e due.. nel senso che ho provato a contare il numero di righe ma mi dava "Ness risultato".. però la query funzionava!!

    Allora ho pensato che il mio errore fosse di logica e basta!

    Ho semplicemente eliminato quella parte di codice e tutto è tornato a funzionare a parte un Warning nella riga -- include("disconnessione_db.php"); --
    In questo file c'è semplicemente "mysql_free_result($risultato);".

    Che cosa può essere? Non riesco a capire perchè mi da questo warning!!

  5. #5
    Originariamente inviato da max5000
    intanto grazie mille per le risposte!!

    avete ragione tutti e due.. nel senso che ho provato a contare il numero di righe ma mi dava "Ness risultato".. però la query funzionava!!

    Allora ho pensato che il mio errore fosse di logica e basta!

    Ho semplicemente eliminato quella parte di codice e tutto è tornato a funzionare a parte un Warning nella riga -- include("disconnessione_db.php"); --
    In questo file c'è semplicemente "mysql_free_result($risultato);".

    Che cosa può essere? Non riesco a capire perchè mi da questo warning!!
    per la stessa ragione di prima. Un UPDATE non rende alcun resource id number. mysql_free_result svuota il buffer dal result set (che non esiste con UPDATE) e non libera alcuna connessione.

    Forse sarebbe proficuo per te dare una lettura a qualche tutorial.

    http://database.html.it/guide/leggi/87/guida-mysql/

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Grazie mille!!

  7. #7
    Originariamente inviato da max5000
    intanto grazie mille per le risposte!!

    avete ragione tutti e due.. nel senso che ho provato a contare il numero di righe ma mi dava "Ness risultato".. però la query funzionava!!

    Allora ho pensato che il mio errore fosse di logica e basta!

    Ho semplicemente eliminato quella parte di codice e tutto è tornato a funzionare a parte un Warning nella riga -- include("disconnessione_db.php"); --
    In questo file c'è semplicemente "mysql_free_result($risultato);".

    Che cosa può essere? Non riesco a capire perchè mi da questo warning!!
    hai provato a vedere se $risultato esiste ancora? (visto che hai cancellato qualcosa....)

    Inoltre non so se hai letto con attenzione quello che ti ha scritto piero.mac ma in soldoni significa che quel codice che hai scritto è concettualmente tutto sbagliato...e non solo dal punto di vista mysql:
    Codice PHP:
    $nome_societa $_POST['nome_societa'];         // ti esponi a rischi di sicurezza
    $partita_iva $_POST['partita_iva'];
    $telefono_sede $_POST['telefono_sede'];
    $proprietario $_POST['proprietario'];

    include(
    "connessione_db.php");

    $query "
       UPDATE impresa_edile
       SET 
          telefono_sede = '
    $telefono_sede',          // in rel. a prima qui rischi SQL Injections
          proprietario = '
    $proprietario',
          nome_societa = '
    $nome_societa'
       WHERE partita_iva = '
    $partita_iva'
    "
    ;

    $risultato mysql_query($query) or die("Query fallita");

    while (
    $riga mysql_fetch_row($risultato))        // non ha senso visto che fai una update
    {
       
    $partita_iva $riga['partita_iva'];          // pur nn contanto che fai una update
                                                    // non puoi fare mysql_fetch_row() e poi 
                                                    // usare $riga['nomecampo'] xkè in realtà hai
                                                    // $riga[0], $riga[1], etc...
       
    $nome_societa $riga['nome_societa'];
       
    $telefono_sede $riga['telefono_sede'];
       
    $proprietario $riga['proprietario'];
    }


    include(
    "disconnessione_db.php"); 
    Administrator of NAMDesign.Net

  8. #8
    Mi sono accorto che era tutto sbagliato.

    ho modifica questa parte di codice:

    while ($riga = mysql_fetch_row($risultato)) // non ha senso visto che fai una update
    {
    $partita_iva = $riga['partita_iva']; // pur nn contanto che fai una update
    // non puoi fare mysql_fetch_row() e poi
    // usare $riga['nomecampo'] xkè in realtà hai
    // $riga[0], $riga[1], etc...
    $nome_societa = $riga['nome_societa'];
    $telefono_sede = $riga['telefono_sede'];
    $proprietario = $riga['proprietario'];
    }


    Visto che faccio un update in effetti non ha senso che faccio un ciclo!!

    Ed in effetti ho eliminato anche mysql_fetch_row().

    Il codice l'ho modificato come segue:

    $query = "UPDATE impresa_edile
    SET telefono_sede = '$telefono_sede', proprietario = '$proprietario', nome_societa = '$nome_societa'
    WHERE partita_iva = '$partita_iva'";

    if (mysql_query($query))
    $modifica = true;
    else
    $modifica = false;

    Così può andare bene?

  9. #9
    si può andar bene, però:
    1) quando scrivi del codice php nel forum usa ti tag [ php] e [ /php] in modo che vediamo bene.
    2) quando fai una update la mysql_query() ti ritorna true o false in caso di successo o insuccesso, quindi va bene quello che hai scritto.
    3) se ti interessa sapere il numero di righe aggiornate puoi usare mysql_affected_row().

    buon proseguimento
    Administrator of NAMDesign.Net

  10. #10
    Grazie per la dritta!!



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.