2016-08-09 48 views
1

ich durch diesen Fehler stapfte wurde ich versucht, Benutzer bin bestätigen, dass, wenn Benutzernamen oder E-Mail ist bereits in der table.please Hilfe ....SQLSTATE [HY093]: Ungültige Parameternummer: Parameter wurde nicht Php PDO definiert

function checkDuplicateEntries($table,$column_name,$value,$db){ 

    try { 

     $sqlQuery = "SELECT * FROM " .$table."WHERE".$column_name."=:$column_name"; 

     $statement = $db->prepare($sqlQuery); 

     $statement->execute(array(':$column_name'=> $value)); 

     if($row=$statement->fetch()){ 

      return true; 
     } 
     return false; 

    }catch (PDOException $ex){ 

     echo"error while checking for duplicate entries".$ex->getMessage(); 

    } 


} 


if(checkDuplicateEntries("users","email",$email,$db)){ 

      $result = flashMessage("Email is already taken please try another one"); 
     } 


else if(checkDuplicateEntries("users","username",$username,$db)){ 

     $result = flashMessage("Username is already taken please try another one"); 
    } 
+0

Was ist die Ausgabe von diesem? –

+1

Stellen Sie sicher, dass Sie den Unterschied zwischen einfachen und doppelten Anführungszeichen kennen. –

+0

Fehler beim Prüfen auf doppelte EinträgeSQLSTATE [HY093]: Ungültige Parameternummer: Parameter war nicht defenderror beim Überprüfen auf doppelte EinträgeSQLSTATE [HY093]: Ungültige Parameternummer: Parameter wurde nicht definiert –

Antwort

0

Der Grund dafür ist, dass Sie auf ausführen einfache Anführungszeichen verwenden() aufrufen:

$statement->execute(array(':$column_name'=> $value)); 

wechseln sie auf eine doppelte Anführungszeichen und versuchen Sie es erneut. Bitte sehen Sie sich auch an: What is the difference between single-quoted and double-quoted strings in PHP?

+0

In Ihrer Situation In der Bedingung '$ sqlQuery' verwenden Sie doppelte Anführungszeichen, so dass der Wert' $ column_name' extrahiert wird. Aber dann benutzt man einfache Anführungszeichen für execute, also wird der Wert nicht extrahiert und pdo sieht ': $ spaltenname', nicht den Wert dieser Variable. Bitte lesen Sie aufmerksam die Informationen über den von mir bereitgestellten Link und Sie haben dieses Problem nicht mehr. – deniskoronets