2016-05-24 6 views
0

Ich habe einen Fehler beim Ausführen dieses SQL mit PHP, aber wenn ich es auf der Datenbank selbst läuft es funktioniert ohne Fehler (ich bin immer noch ziemlich neu zu mysql, also bitte geben Sie mir einen Hinweis was ist falsch, ich kann das Problem nicht finden).SQL Fehler mit PHP nicht auf DB selbst

Die Query (auch nur Code-Zeile, wenn $ SQLDatei):

INSERT INTO BankUser (ID, Name, Admin, Password, AccessLevel, LoggedIn, FailedLogin, Banned, IP, Browser, LastLogin, Kommentar) VALUES (NULL, 'Luke', 'Luke', 'supersecretpassword', '3', '0', '0', '0', 'Unbekannt', 'Unbekannt', '2016-01-01 00:00:00', ''); 

Der Fehler:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO BankUser (ID, Name, Admin, Password, AccessLevel, LoggedIn, Faile' at line 1 

PHP-Code:

foreach($Datenbankorganisation as $SQLDatei) { 
    $SQL = file_get_contents($SQLDatei); 
    $Result = mysqli_query($DB_LINK, $SQL); 

    if(!$Result) { 
     echo "<p>[".$SQLDatei."] <span style='color: red';>SQL-Fehler</span>: ".mysqli_error($DB_LINK)."</p>"; 
    } else { 
    echo "<p>[".$SQLDatei."] <span style='color: green';>SQL erfolgreich</span>.</p>"; 
    } 
} 
+0

Geben Sie uns PHP-Code – KuKeC

+0

Wenn ID auto_increment, könnten Sie versuchen, ID und NULL aus Ihrer Aussage zu entfernen. –

+0

Ich kann mich nicht an die Besonderheiten erinnern, aber die Großschreibung von Datenbanken, Tabellen und Spalten kann Probleme verursachen. Ich bin sicher, wenn Sie den PHP-Code bereitstellen würden, mit dem Sie die genauen Einstellungen bereitstellen, die ausgeführt werden müssen um Großbuchstaben in Ihren Abfragen zu berücksichtigen. – apriede

Antwort

1

The Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO BankUser […]

MySQL in der Regel zeigt der Teil der Aussage von der Position, wo es einen Fehler gefunden nach "die richtige Syntax in der Nähe von".

Da es Ihre vollständige Erklärung von Anfang an hier zeigt, wahrscheinlich ist es etwas vor das INSERT Schlüsselwort -, dass Sie nicht/kann nicht sehen, aber MySQL tut & stolpert über sie.

Sie lesen Ihre SQL-Abfragen aus Dateien hier, also meine erste Vermutung wäre, dass diese Dateien wahrscheinlich eine Byte Order Mark (BOM) enthalten, um anzuzeigen, welche Zeichenkodierung der Dateiinhalt gespeichert ist - höchstwahrscheinlich ist das UTF -8 mit Stückliste. So versuchen Sie und speichern Sie sie als UTF-8 ohne BOM. (Zum Beispiel kann Notepad ++ die verwendete Zeichencodierung erkennen und leicht in die entsprechende ohne BOM konvertieren.)

+0

Danke für Ihre Schätzung! Ich habe die Programmierung mit Notepad geändert, gespeichert und mein Skript neu geladen, es funktioniert! – LuckyLuke