Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Update di più campi
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • S
      supadema User • 8 feb 2011, 08:51 ultima modifica di

      Update di più campi

      Salve a tutti,
      avrei un problemino con update in mysql...

      Ho un form la cui 'action' mi manda a un file.php che dovrebbe aggiornarmi 3 campi della mia tabella contemporaneamente.

      Per fare questo ho provato più strade, ma nessuna di queste sembra funzionare come voglio...

      Strada 1:
      eseguire tante query quanti sono i campi da aggiornare:

      [php]
      $sql_upd1 = "UPDATE contenuti SET ordine = '$ordine' WHERE ordine = '$upd'";
      @mysql_query("$sql_upd1",$link) or die("Errore query database: " . mysql_error());
      $sql_upd2 = "UPDATE contenuti SET link = '$newLink' WHERE ordine = '$upd'";
      @mysql_query("$sql_upd2",$link) or die("Errore query database: " . mysql_error());
      $sql_upd3 = "UPDATE contenuti SET descrizione = '$descrizione' WHERE ordine = '$upd'";
      @mysql_query("$sql_upd3",$link) or die("Errore query database: " . mysql_error());
      [/php]Il risultato di questo è un po' strano, nel senso che questo codice mi esegue solo la prima query, le altre 2 sembrano passare inosservate.
      Se commento la prima query ($sql_upd1) le altre due funzionano entrambe contemporaneamente.

      Strada 2:
      In questo caso ho provato a fare qualcosa di più complesso ma più snello, ma così non mi aggiorna proprio nulla, quindi ci dev'essere qualche errore.

      [php]
      $field = array('ordine' => '$ordine','link' => '$newLink','descrizione' => '$descrizione');
      foreach ($field as $k => $v) {
      @mysql_query($sql_upd = "UPDATE contenuti SET $k = '$v' WHERE ordine = '$upd'",$link) or die("Errore query database: " . mysql_error());
      }
      [/php]Qualcuno mi sa dare qualche suggerimento, pls? :smile5:

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
        Caricamento altri post
        Rispondi
        • Topic risposta
        Effettua l'accesso per rispondere
        • Da Vecchi a Nuovi
        • Da Nuovi a Vecchi
        • Più Voti
         

      • T
        tigrone User Attivo • 8 feb 2011, 11:07 ultima modifica di

        Ti stai complicando la vita inutilmente!
        Aggiorna i 3 campi con un'unica query.

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • T
          thedarkita ModSenior • 8 feb 2011, 11:13 ultima modifica di

          Ciao supadema,
          ti consiglierei oltre ad utilizzare un'unica query come ti ha già detto tigrone, di non nascondere gli errori, proprio perchè non puoi sistemarli in tempi brevi.

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • S
            supadema User • 8 feb 2011, 11:22 ultima modifica di

            @tigrone
            In una sola query? Cioè una cosa così:
            $sql_upd = "UPDATE contenuti SET ordine = '$ordine',link = '$newLink',descrizione = '$descrizione' WHERE ordine = '$upd'";
            Era la prima cosa che avevo provato, ma non funzionava e poi facendo un po' di ricerche mi era sembrato di capire non si potesse fare...

            @Thedarkita
            non ho capito, cosa vuol dire non nascondere gli errori?

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • T
              tigrone User Attivo • 8 feb 2011, 11:25 ultima modifica di

              Esatto.
              Se metti davanti alle funzioni il simbolo '@', non fai visualizzare gli errori.

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • S
                supadema User • 8 feb 2011, 11:29 ultima modifica di

                aah è vero, mi ero dimenticato di questo!

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • S
                  supadema User • 8 feb 2011, 18:49 ultima modifica di

                  Ho risolto, adesso funziona:

                  [PHP]
                  $field = array('link' => $newLink, 'descrizione' => $descrizione,'ordine' => $ordine);
                  foreach ($field as $k => $v) {
                  mysql_query($sql_upd = "UPDATE contenuti SET $k = '$v' WHERE ordine = '$upd'",$link) or die("Errore query database: " . mysql_error());
                  }
                  [/PHP]

                  L'errore stava nell'array, doveva essere $newLink e non '$newLink', $ordine e non '$ordine', ecc.

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • T
                    thedarkita ModSenior • 9 feb 2011, 15:25 ultima modifica di

                    Stai facendo molte query, quando potevi fare la stessa cosa con una query ed ottenere un utilizzo di risorse inferiore.

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    Caricamento altri post
                    Rispondi
                    • Topic risposta
                    Effettua l'accesso per rispondere
                    • Da Vecchi a Nuovi
                    • Da Nuovi a Vecchi
                    • Più Voti