Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    11

    php+mysql update dentro ciclo while

    ciao,
    sto provando una serire di update dentro un ciclo while, ma non funziona, l'echo a video mostra tutte le istruzioni di update, eseguita singolarmente funziona ma da applicativo non fa nulla, i campi restano a null:
    Codice PHP:
    $sql_gg_garanzia "SELECT a.id_scheda AS id_scheda, 
                       a.sistema AS sistema, 
              b.data_esercizio AS data_esercizio,
              datediff(a.data_apertura,b.data_esercizio) AS gg_garanzia 
              FROM kpi_sm_calcolo a, kpi_kit b 
              WHERE a.KIT= b.kit AND a.ambiente='Esercizio';"
    ;

    if (
    $resGaranzia mysqli_query($db$sql_gg_garanzia)) {
        
    /* fetch associative array */
        
    while ($a_row mysqli_fetch_row($resGaranzia)) {
        
    $sqlUpdgaranzia "UPDATE kpi_sm_calcolo 
                           SET data_esercizio = '
    $a_row[2]', garanzia = $a_row[3] 
                           WHERE id_scheda='
    $a_row[0]' AND sistema='$a_row[1]';";
        echo 
    $sqlUpdgaranzia ."</br>";
        
    mysqli_query($db,$sqlUpdgaranzia);
        }
        
    mysqli_commit($db);

    aiuto
    grazie 1000
    ciao

  2. #2
    i campi che passi all'UPDATE sono delle stringhe? Se si' il doppio apice va inserito al posto dell'apice e va scritto cosi "\

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    11
    in realtà un campo è di tipo datetime e l'altro è un float(9,4), non va:

    Codice PHP:
    $sqlUpdgaranzia "UPDATE kpi_sm_calcolo SET data_esercizio = \"$a_row[2]\", garanzia = $a_row[3] WHERE id_scheda=\"$a_row[0]\" AND sistema=\"$a_row[1]\";"
    a mano funziona, c'è di mezzo qualche conversione di tipo e/o formato da fare ?
    grazie 1000 per l'aiuto,

  4. #4
    ciao,
    effettivamente anche io sono abbastanza a "digiuno" di php, comunque prova a fare cosi': sostituisci le variabili con dei valori fissi che inserisci direttamente nel comando update e prova a rieseguire il comando;
    secondo me, cosi' ad occhio, l'errore potrebbe essere nei formato dei dati che vengono memorizzati sul comando update (penso che non tutti debbano essere inseriti con gli apici).
    Se tutto funziona reinserisci uno ad uno i tre valori e vedi quando il programma va in errore...

    Scusa ma cosi' al volo non ti so suggerire qualcosa di meglio

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    11
    comincio a pensare che mysql sia un piccolo mostricciatolo ......
    non va ......
    Codice PHP:
    $sqlUpdgaranzia "UPDATE kpi_sm_calcolo SET data_esercizio = '2011-05-10', garanzia = -321 WHERE id_scheda='AMTGRC_SM_49' AND sistema='AMTGRC' ;"
    ho messo anche l'istruzione di die sull'update
    Codice PHP:
    mysqli_query($db,$sqlUpdgaranzia) or die("<h3>Errore durante l'UPDATE !

    "
    mysqli_error($db)."errno:".mysqli_errno($db)); 
    che prima non c'era ma per il mostro sembra tutto regolare ....

  6. #6
    Guarda,
    ho fatto questa prova ed ha funzionato cosi' quindi i campi dovrebbero essere trattati in questo modo

    Codice PHP:
    $inserimento=mysql_query("insert into tabella (campo1, campo2, data_ora, campo3, campo4) values (\"$_POST[nomevar1]\", \"$_POST[nomevar2]\", \"2011-01-01\", \"$_POST[nomevar3]\", \"$_POST[nomevar4]\")");
    if(
    $inserimento==true){
    echo 
    "record inviato con successo";
    }
    else{
    echo 
    mysql_error();

    Con le righe successive vedrai se l'istruzione ti ha dato un errore o meno.
    Come vedi il campo data viene inserito in quel modo.

    Per il float non saprei cosa dirti, ma penso che vada inserito senza \"

  7. #7
    rettifico, gli \" dovrebbero andare anche sui float

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    11
    ho isolato il pezzo di codice incriminato in un altro script e funziona, devo indagare.

  9. #9

    Re: php+mysql update dentro ciclo while

    Originariamente inviato da geko66
    ciao,
    sto provando una serire di update dentro un ciclo while, ma non funziona, l'echo a video mostra tutte le istruzioni di update, eseguita singolarmente funziona ma da applicativo non fa nulla, i campi restano a null:
    Codice PHP:
    $sql_gg_garanzia "SELECT a.id_scheda AS id_scheda, 
                       a.sistema AS sistema, 
              b.data_esercizio AS data_esercizio,
              datediff(a.data_apertura,b.data_esercizio) AS gg_garanzia 
              FROM kpi_sm_calcolo a, kpi_kit b 
              WHERE a.KIT= b.kit AND a.ambiente='Esercizio';"
    ;

    if (
    $resGaranzia mysqli_query($db$sql_gg_garanzia)) {
        
    /* fetch associative array */
        
    while ($a_row mysqli_fetch_row($resGaranzia)) {
        
    $sqlUpdgaranzia "UPDATE kpi_sm_calcolo 
                           SET data_esercizio = '
    $a_row[2]', garanzia = $a_row[3] 
                           WHERE id_scheda='
    $a_row[0]' AND sistema='$a_row[1]';";
        echo 
    $sqlUpdgaranzia ."</br>";
        
    mysqli_query($db,$sqlUpdgaranzia);
        }
        
    mysqli_commit($db);

    aiuto
    grazie 1000
    ciao
    ...le variabili...maledette variabili...
    codice:
    $sqlUpdgaranzia = "UPDATE kpi_sm_calcolo 
                           SET data_esercizio = '{$a_row[2]}', garanzia = {$a_row[3]} 
                           WHERE id_scheda='{$a_row[0]}' AND sistema='{$a_row[1]}';";
    Inoltre...mi par di ricordare che se vuoi usare il commit, devi prima istruire il db di eseguire il prepare...


  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    11
    non va ugualmente. esiste forse qualche parametro di mysql da settare per permettere l'update di migliaia di record, nell'ordine delle 20.000?

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.