2016-04-07 14 views
-1


Könnt ihr mir bitte sagen, was an diesem Code fehlt? weil ich SQL Syntax Error bekomme.SQL-Syntaxfehler (Serverversion: 5.6.17 - MySQL)

Ich habe eine Tabelle mit drei Spalten erstellt. ID wird automatisch belastende und Bild ist Blob-Datentyp

wie ich denke Problem tritt auf, wenn das $ Bild Einfügen

hier ist der Fehler ------- >> „Sie haben einen Fehler in Ihrer SQL-Syntax ; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version entspricht, damit die richtige Syntax in der Nähe von ' # ~ I 27W ? HL : o : ӏvm5V Ό verwendet werden kann '`V' in Zeile 1"

<?php 

if (isset($_POST["Upload"])) 
{ 
    include("DbConnection.php"); 

     $file = $_FILES['image']['tmp_name']; 


     if(!isset($file)) { 
      echo 'Please Select a File'; 
     } 
     else { 
      $image  = file_get_contents($_FILES['image']['tmp_name']); 
      $img_name = $_FILES['image']['name']; 
      $img_size = getimagesize($_FILES['image']['tmp_name']); 

      if ($img_size == false) 
         { 
       echo 'it is not a image'; 
         } 

     else 
     { 
      $query = mysqli_query($Con, "INSERT INTO `cars_tbl` (ID,Name,Image) VALUES ('','$img_name','$image')"); 
       if (!$query) 
       { 
        echo 'Error Executing Query '.mysqli_error($Con); 
        } 
        else 
        { 
         $last_ID = mysqli_insert_id($Con); 
         echo "Image Uploaded. <p /> Your Image : <p /> <img src='get.php?ID=".$last_ID."'" ; 
         } 


      } 

         } //else 
} // 1st IF 

else 
{ 
    echo 'Fill the details'; 
} 
?> 
+0

Bitte Code hier eingeben, nicht eine gute Praxis, um einen Screenshot zu zeigen, denn wer sich entscheiden wird, Ihnen zu helfen, muss es erneut eingeben –

+0

ich habe es bereits versucht. aber das ist nicht das Problem. aber wenn ich Abfrage ausführen ohne $ image keine Fehler zu setzen. Problem mit der Bilddatei. deshalb zeigen fremde Zeichen den Fehler an. Ich habe auch verschiedene Bilder ausprobiert. –

+0

Erste Regel bei der Arbeit mit Benutzereingaben: ** Niemals ** Benutzereingaben vertrauen. Es muss ordnungsgemäß vor/in jeder Aktion maskiert werden. Und eine hochgeladene Datei ist immer noch Benutzereingabe. – Arjan

Antwort

1

Sie haben vergessen $img_name in '

einzuwickeln
+0

nein. das ist nicht der Fall. Fehler ----> Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version entspricht, um die richtige Syntax in der Nähe von " " in Zeile 1 zu verwenden. –

+0

Was ist der Dateiname, den Sie übermitteln möchten? Versuchen Sie, es in etwas mit englischen Buchstaben –

+0

umzubenennen, es wird bereits in Englisch als image1, image2 und so weiter umbenannt. –

0

Sie versuchen, den Wert '$ img_name' als Name und nicht img_name Inhalt einzufügen. Versuchen Sie Folgendes:

$query = mysqli_query($Con, "INSERT INTO `cars_tbl` (ID,Name,Image) VALUES ('','" . $img_name . "','" . $image . "')"); 
1

Das Problem ist, dass Sie offenbar blob in die Datenbank ohne es entkommen zu speichern.

Sie müssen wissen, was in Ihrem Befehl passiert: Die Bilddaten - die auch enthalten können, weil es binär ist - machen Ihren SQL-Befehl ungültig.

Die richtige Art und Weise, wie es zu sparen:

1)

Entweder mit Prepared Statements

2)

mysqli_query($Con, "INSERT INTO `cars_tbl` (ID, Name, Image) 
    VALUES ('', '$img_name', '".mysqli_escape_string($image)."')"); 

würde ich Prepared Statements bevorzugen. Die andere Frage ist, warum Sie ID auf eine leere Zeichenfolge festlegen.

+0

PDO ist keine magische Lösung, die alle Probleme stoppt. Ich würde vorbereitete Aussagen empfehlen, und diese sind auch in mysqli verfügbar. Trotzdem würde ich, wenn möglich, PDO mit vorbereiteten Aussagen vorziehen. – Arjan

+0

@Arjan Thx, ich war ungenau. Antwort aktualisiert –

Verwandte Themen