Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 39
  1. #11
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Appunto. È per questo che non andava bene.
    Ma ho spiegato il mio problema... la query e il codice non so se sono corretti come logica...e non conoscendo minimamente ne bindparam ne on duplicate key update (https://www.youtube.com/watch?v=jovkZi42J1U) ho chiesto aiuto a voi... di certo qualcosa non va bene... ma non capisco come risolvere il problema!

  2. #12
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Codice PHP:
        $products = [];        foreach (array_keys($match[2]) as $idx) {                $taglia substr($match[2][$idx],1); // 1 e' il numero di caratteri da rimuovere            $products[] = [            ':prodotto'  => $taglia,            ':quantita' => $match[3][$idx],            ':terminale'   => $match[4][$idx]        ];    }
        
    $pdo = new PDO("mysql:host=$host;dbname=$db_name"$username$password);    $query $pdo->prepare('    INSERT INTO tabella     (prodotto, quantita, terminale)     VALUES     (:prodotto, :quantita, :terminale)    ON DUPLICATE KEY UPDATE     quantita= :quantita, terminale= :terminale');            foreach ($products as $product) {        $query->execute($product);    } 
    Così dovrebbe funzionare.

    Prima prepari l'array dei prodotti da passare a execute() in cui si sono i : per fare il bind.
    Poi ti colleghi al db e prepari la query.
    Infine fai una query per ogni prodotto passando i valori dentro ogni array.

    Non ho mai provato ma non credo che execute() ti trovi su cosa bindare i parametri che gli passi se non metti i :

  3. #13
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Mi ha formattato il codice da schifo e non mi fa editare il messaggio, proviamo così:

    Qui c'è il codice https://pastebin.com/t6cBEhTx

    p.s. questo forum funziona sempre peggio.

  4. #14
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questo e dimmi se funziona.

    Codice PHP:
        $pdo = new PDO("mysql:host=$host;dbname=$db_name"$username$password);    
     
    $query $pdo->prepare('    INSERT INTO tabella     (prodotto, quantita, terminale)     VALUES     (:prodotto, :quantita, :terminale)    ON DUPLICATE KEY UPDATE     quantita= :quantita, terminale= :terminale');  

     
    $prodotto  'XXXXXX';
     
    $quantita  15;
     
    $terminale 'YYYYYY';
     
     
    $query->bindParam(':prodotto'$prodotto);      
     
    $query->bindParam(':quantita'$quantitaPDO::PARAM_STR);    
     
    $query->bindParam(':terminale'$terminalePDO::PARAM_STR);    
     
    $query->execute(); 
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #15
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    Mi ha formattato il codice da schifo e non mi fa editare il messaggio, proviamo così:

    Qui c'è il codice https://pastebin.com/t6cBEhTx

    p.s. questo forum funziona sempre peggio.
    Devi usare sempre [ CODE ] non [ PHP ]
    Comunque niente da fare... reinserisce tutti i valori!

    Badaze ma io non ho valori statici da confrontare...comunque ora provo....
    Ho provato e mi aggiunge un record in piu alla fine di tutti...
    prodotto qnt termina
    XXXXXX 15 YYYYYY

    ragazzi stavo pensando ma sicuri che il problema nn risieda in
    codice:
        foreach ($products as $product) {
            $query->execute($product);
        }
    Ultima modifica di supersqualo; 13-09-2017 a 20:32

  6. #16
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Secondo me c'è un errore nella configurazione delle tabelle.
    Il php mi sembra corretto, sono un po' stanco ma è anche codice abbastanza semplice.

    sei sicuro che nel db il campo prodotto sia UNIQUE o PRIMARY KEY?

  7. #17
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    Secondo me c'è un errore nella configurazione delle tabelle.
    Il php mi sembra corretto, sono un po' stanco ma è anche codice abbastanza semplice.

    sei sicuro che nel db il campo prodotto sia UNIQUE o PRIMARY KEY?
    Perdona l'ignoranza... su phpmyadmin dove lo controllo? (in qualunque caso deve essere unique? perche quando provo ad impostarla sia unique che primary mi da errore: Specified key was too long; max key length is 1000 bytes)

    https://i.imgur.com/hGIe0yz.png

    Inoltre se dai una lettura su internet... ho visto che in tutti i casi per u sare ON DUPLICATE KEY UPDATE con PDO bisogna usare bindparam.... poi non so potrei sbagliarmi
    Ultima modifica di supersqualo; 13-09-2017 a 20:45

  8. #18
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Si perché prodotto è troppo grande.
    Cosa ci deve stare dentro? Deve essere er forza un varchar da 500?

  9. #19
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Quote Originariamente inviata da supersqualo Visualizza il messaggio
    Devi usare sempre [ CODE ] non [ PHP ]
    Comunque niente da fare... reinserisce tutti i valori!

    Badaze ma io non ho valori statici da confrontare...comunque ora provo....
    Ho provato e mi aggiunge un record in piu alla fine di tutti...
    prodotto qnt termina
    XXXXXX 15 YYYYYY

    Ho messo dei valori statici solo per farti capire come funziona bindParam.

    Prova questo.

    Codice PHP:
        $pdo = new PDO("mysql:host=$host;dbname=$db_name"$username$password);    
     
    $query $pdo->prepare('    INSERT INTO tabella     (prodotto, quantita, terminale)     VALUES     (:prodotto, :quantita, :terminale)    ON DUPLICATE KEY UPDATE     quantita= :quantita, terminale= :terminale');  

         
     foreach (
    $products as $product) {        
          
    $query->bindParam(':prodotto'$product['prodotto]);      
      $query->bindParam('
    :quantita', $product['quantita'], PDO::PARAM_STR);    
      $query->bindParam('
    :terminale', $product['terminale'], PDO::PARAM_STR);    
      $query->execute();    
     } 
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #20
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    .

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.