2016-04-12 20 views
0

Ich habe folgendes Mysqli Code:SQL-Fehler mit [in Tabellenname

SELECT aircraft.*, [users_storage].* 
FROM aircraft_database aircraft, 
    `[users_storage]` userstorage 
WHERE aircraft.aircraftid = userstorage.aircraft 
    AND userstorage.userid = '1' 

wobei die verwendeten Tabellen ist [users_storage] und aircraft

ich die folgende Fehlermeldung erhalten:

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 '[users_storage].* FROM aircraft_database aircraft, [users_storage] userstorag' at line 1

Diese tritt bei Verwendung von [ und ] in Tabellennamen auf.

Wie kann ich diese Abfrage funktionieren lassen?

+0

Einfach diese entfernen. (Sie können stattdessen Back-Ticks verwenden.) ANSI SQL hat doppelte Quoes, aber einige Produkte haben ihre eigenen Möglichkeiten ... – jarlh

+0

Warum brauchen Sie '[]' in Ihrer Anfrage? – itzmukeshy7

Antwort

2

Wenn der Tabellenname [users_storage] lautet, müssen Sie den Namen in der Aliasdefinition mit Backticks korrekt begrenzen. Dann einfach den Alias ​​in der SELECT Klausel:

SELECT aircraft.*, userstorage.* 
FROM aircraft_database aircraft 
JOIN `[users_storage]` userstorage 
    ON aircraft.aircraftid = userstorage.aircraft 
WHERE userstorage.userid = '1' 

Wenn auf der anderen Seite, können Sie Tabellennamen users_storage ist, dann müssen Sie nicht verwenden Backticks überhaupt:

SELECT aircraft.*, userstorage.* 
FROM aircraft_database aircraft 
JOIN users_storage userstorage 
    ON aircraft.aircraftid = userstorage.aircraft 
WHERE userstorage.userid = '1' 

Hinweis: Verwenden Sie moderne, explizite anstelle von implizitJOIN Syntax.