2017-05-10 3 views
0

Ich weiß, es gibt eine Menge dieser Fragen zu diesem Fehler, aber keine der Antworten Over Stack overflow, google usw. half mir bei meinem Problem. Vielleicht kann hier jemand herausfinden, warum dieser Fehler ständig auftritt. Ich bin relativ neu in PHP, also für kleine Anwendungen lese ich viele Tutorials und verwende sie für meine Fälle.PHP: SQLSTATE [42000]: Syntaxfehler oder Zugriffsverletzung: 1064

Ich habe versucht, eine Registrierungsseite mit dem folgenden Tutorial zu tun: Syntaxfehler oder Zugriffsverletzung: http://www.codingcage.com/2015/11/ajax-registration-script-using-jquery-php.html

Nachdem alles isset und getan, ich den Fehler

SQLSTATE [42000] immer erhalten 1064 Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, für die richtige Syntax, die Sie in der Nähe von '' in Zeile 1 verwenden können!

... wenn ich die Registrierung einreiche. Also ich denke, es in diesem Teil des Codes zu sein hat:

$qry = "SELECT * FROM geraeteuser WHERE `user_email` LIKE :email"; 
$stmt = $db_con->prepare($qry); 
$stmt->execute(array(":email"=>$user_email)); 

ich alles versucht backtips hier und da mit, aber egal was ich tue, funktioniert es nicht.

Der vollständige Code sieht wie folgt aus ("geraetestatus" der Name Tabelle):

<?php 

require_once "dbconfig.php"; 

if($_POST) 
{ 
    $user_name = $_POST['user_name']; 
    $user_email = $_POST['user_email']; 
    $user_password = $_POST['password']; 

    $password = md5($user_password); 

    try 
    { 
     $qry = "SELECT * FROM geraeteuser WHERE `user_email` LIKE :email"; 
     $stmt = $db_con->prepare($qry); 
     $stmt->execute(array(":email"=>$user_email)); 
     $count = $stmt->rowCount(); 

     if($count==0){ 

     $stmt = $db_con->prepare("INSERT INTO `geraeteuser`(user_name,user_email,user_password) VALUES(:uname, :email, :pass"); 
     $stmt->bindParam(":uname",$user_name); 
     $stmt->bindParam(":email",$user_email); 
     $stmt->bindParam(":pass",$password); 

      if($stmt->execute()) 
      { 
       echo "registered"; 
      } 
      else 
      { 
       echo "Query could not execute !"; 
      } 

     } 
     else{ 

      echo "1"; // not available 
     } 

    } 
    catch(PDOException $e){ 
     echo $e->getMessage(); 
    } 
}?> 

und in der Datei "dbconfig.php", das enthalten ist, gibt es eine gU wie folgt erstellt:

<?php 

$db_host = ***; 
$db_name = ***; 
$db_user = ***; 
$db_pass = ***; 

try{ 

    $dsn = "mysql:host=$db_host;dbname=$db_name"; 

    $db_con = new PDO($dsn, $db_user, $db_pass, array(PDO::ATTR_PERSISTENT => true)); 
    $db_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 
catch(PDOException $e){ 
    echo $e->getMessage(); 
}?> 

Hat jemand irgendwelche Vorschläge für mich, um diese Arbeit zu machen? Ich habe fast alles versucht, was ich hier und in den Google-Antworten finden konnte, aber nichts half.

+0

Welche SQL-Anweisung generiert den Fehler? – Shadow

+0

Sorry, ich habe vergessen, das zu erwähnen. Ich denke, es kommt immer vor, wenn ich das Formular ausfülle und abschicke, also muss es dieses sein, nehme ich an '$ qry =" SELECT * FROM geraeeteuser WHERE 'user_email' LIKE: email "; $ stmt = $ db_con-> vorbereiten ($ qry); $ stmt-> execute (array (": email" => $ user_email)); ' –

+0

@SilvioHungsberg Haben Sie tatsächlich Singlequotes in der Query verwendet, oder nur wegen der Formatierung von SO-Kommentaren, die Backticks verwenden? Und woher weißt du, dass es die SELECT-Abfrage ist und nicht die INSERT? – Qirel

Antwort

0

In Ihrer Insert-Abfrage String ist eine fehlende schließende Klammer am Ende. Sie müssen schließen WERTE (... ->) < -

+0

Das ist schon raus wie oben gepostet, aber vielen Dank für eure Hilfe :) –

Verwandte Themen