Visualizzazione dei risultati da 1 a 6 su 6

Discussione: php - array - mysql

  1. #1

    php - array - mysql

    Buongiorno a tutti, ho un problema con un applicazione che sto sviluppando.

    Il "cuore" dell'applicazione è l'invio di email in base alle scadenze del servizio di assistenza.
    Attualmente funziona tutto correttamente tranne una query di update che e eseguo al termine di invio della mail

    Es pratico:
    Utente A: mail@mail.it
    Nel database ha due tool con scadenza assistenza in gennaio 2015

    Utente B: abc@abc.it
    Nel db ha un tool con scadenza assitenza in gennaio 2015

    Eseguo query, creo array, ciclo i risultati per ragruppare in base alla mail, invio mail

    Dopo l'invio della mail vorrei eseguire una query di update per ogni riga del db a cui ho inviato la mail, il mio problema è che se ho un array unico (quindi 1 tool per 1 utente) tutto funziona e la query di update funziona

    Codice PHP:
    } else {
            echo 
    'Message has been sent';
            
    $sql2="UPDATE tools SET STATUS='S'  WHERE ID='".$item['0']."'"

    Es. utente B
    Array:
    codice HTML:
    Array
    (
        [0] => Array
            (
                [0] => 49
                [1] => sd
                [2] => ds
                [3] => ds
                [4] => 2015-01-20
                [5] => abc@abc.it
            )
    PHP:


    In questo caso la query di update viene correttamente eseguita sull'ID 49 (item0)


    Es. Utente B

    Array

    codice HTML:
    Array
    (
        [0] => Array
            (
                [0] => 15
                [1] => sd
                [2] => ds
                [3] => ds
                [4] => 2015-01-20
                [5] => mail@mail.it
            )
    
        [1] => Array
            (
                [0] => 8
                [1] => Test
                [2] => 187
                [3] => 000000
                [4] => 2015-01-21
                [5] => mail@mail.it
            )
    In questo caso la query di update viene eseguita solamente sull'ID 08 mentre ID 15 non viene considerato

    Come posso risolvere?
    Con un ciclo?


    Grazie a tutti

  2. #2
    con un ciclo o specificando meglio la clausola where quando fai la query, che ne so

    codice:
    update TuaTabella set campo=valore where email='mail@mail.it' and id in (id1,id2)
    o boh qualcosa del genere dipende da come è la tabella.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Grazie,
    Il mio problema è che non so mai quanti dati conterrà l'array

  4. #4
    consiglierei il minuscolo sui campi del db...
    Questa volta, più che un voto.. è favoreggiamento.

  5. #5
    Quote Originariamente inviata da punkers_80 Visualizza il messaggio
    Grazie,
    Il mio problema è che non so mai quanti dati conterrà l'array
    cicli sull'array estraendo tutti gli id e li usi nella query con una clasuola "ID IN (...)"... cioè partendo da:

    Codice PHP:

    $records 
    /* Array
    (
        [0] => Array
            (
                [0] => 15
                [1] => sd
                [2] => ds
                [3] => ds
                [4] => 2015-01-20
                [5] => mail@mail.it
            )

        [1] => Array
            (
                [0] => 8
                [1] => Test
                [2] => 187
                [3] => 000000
                [4] => 2015-01-21
                [5] => mail@mail.it
            )
    ) */
    ;

    $ids array_map(function($el){ return $el[0]; }, $records);

    echo 
    "update tabella set status = 1 where id in (".implode(',',$ids).")"
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    cicli sull'array estraendo tutti gli id e li usi nella query con una clasuola "ID IN (...)"... cioè partendo da:

    Codice PHP:

    $records 
    /* Array
    (
        [0] => Array
            (
                [0] => 15
                [1] => sd
                [2] => ds
                [3] => ds
                [4] => 2015-01-20
                [5] => mail@mail.it
            )

        [1] => Array
            (
                [0] => 8
                [1] => Test
                [2] => 187
                [3] => 000000
                [4] => 2015-01-21
                [5] => mail@mail.it
            )
    ) */
    ;

    $ids array_map(function($el){ return $el[0]; }, $records);

    echo 
    "update tabella set status = 1 where id in (".implode(',',$ids).")"
    Ottimo, grazie ..funziona perfettamente

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.