Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di danlupo
    Registrato dal
    Jul 2009
    Messaggi
    314

    sqlstate hy093 invalid parameter number parameter was not defined

    Salve qualcuno mi può spiegare questo errore ??

    Ho questo codice:

    Codice PHP:
       $postdata = array('email' => $email,'mobilephone' => $phone);
                
    $where "username = '{$username}'";
                
    $this->db->update('utenti'$postdata$where); 
    che fa riferimento a questa funzione:

    Codice PHP:
       public function update($table$data$where) {
           
    ksort($data);
          try { 

                
    $set ''
                foreach (
    $data as $key => $value) { 
                    
    $set.="$key = :$key"
                } 
                
    $sql "UPDATE $table
                        
    " SET $set
                        
    " WHERE $where"
                
    session::set('campi'$sql); 
                
    $sth $this->prepare($sql); 
                foreach (
    $data as $key => $value) { 
                    
    $sth->bindValue(":$key"$value); 
                } 
          
    $sth->execute(); 
               
    session::set('risultato'$sth->execute()); 
            } catch (
    PDOException $e) { 
                echo  
    $e->getMessage(); 
                
    session::set('risultato'$e->getMessage()); 
            } 
        } 
    Se faccio l'update di un campo alla volta funziona, se uso due o più campi va in errore come da titolo.

    Qual è il possibile problema?

    Grazie !
    Se rispondo ad una discussione è perchè so quello che dico ed ho voglia di rispondere, non per aumentare il contatore messaggi

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Codice PHP:
    foreach ($data as $key => $value) { 
                    
    $set.="$key = :$key"
                } 
    Dovresti separare i vari assegnamenti con la virgola, altrimenti ti viene tutto attaccato

    es:
    email = :emailphone = hone

  3. #3
    Utente di HTML.it L'avatar di danlupo
    Registrato dal
    Jul 2009
    Messaggi
    314
    Mhh perchè il mio codice è quello della prima parte che ho postato (quella del $postdata) il resto fa parte di un template MVC.

    Sai dirmi, se non è un problema, come modificarlo in pratica.

    Devo aggiungere un

    Codice PHP:
    $set.=","
    ??

    Grazie Daniele

    [OT] ho visto che il mio post è stato inviato due volte, è possibile rimuovere l'altro ??
    Se rispondo ad una discussione è perchè so quello che dico ed ho voglia di rispondere, non per aumentare il contatore messaggi

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    prova così:

    Codice PHP:
    try { 

                
    $set = array(); 
                foreach (
    $data as $key => $value) { 
                    
    $set[] ="$key = :$key"
                } 
                
    $sql "UPDATE $table
                        
    " SET ".implode(', '$set)
                        . 
    " WHERE $where"
                
    session::set('campi'$sql); 
                
    $sth $this->prepare($sql); 
                foreach (
    $data as $key => $value) { 
                    
    $sth->bindValue(":$key"$value); 
                } 

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Ma siamo sicuri di quel $key = :$key ?

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Originariamente inviato da luca200
    Ma siamo sicuri di quel $key = :$key ?
    Direi di si, visto che poi fa il bind con i valori

    Codice PHP:
    foreach ($data as $key => $value) {  
                    
    $sth->bindValue(":$key"$value);  
                } 

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.