2016-08-09 75 views
1

In dem Moment, in dem diese 2 Anweisungen ausgeführt werden, wird die Datenbank erstellt, aber ihr Name ist 'myDbName', inklusive Anführungszeichen.
Wenn ich die Anführungszeichen in der ersten Zeile lösche, erhalte ich einen PHP-Fehler, und wenn ich das von dem zweiten entferne, erhalte ich einen mySql-Fehler.
Gibt es eine Möglichkeit, sie zu entfernen/eine Datenbank mit dem richtigen Namen zu erstellen, ohne direkt auf das DBMS zuzugreifen?
Ich würde wirklich lieber nicht den Namen in der zweiten ZeileErstellen einer neuen Datenbank mit PHP/PDO mit einer Variablen als Datenbankname

Vielen Dank im Voraus für die Antworten auf hard

+0

Nur um sicher zu gehen, wie Sie wissen t er heißt ''myDbName'' mit den Anführungszeichen? – FirstOne

+0

Versuchen Sie, die Abfrage vor dem Ausführen zu wiederholen. Überprüfen Sie die Quelle der Seite, um zu sehen, was ausgegeben wird. – FirstOne

+0

@FirstOne, ich habe es aus dem DBMS überprüft.
Aber ich möchte nicht, dass der Endbenutzer darauf zugreifen muss. – Vkfan

Antwort

2

Sie String concat verwenden können und

"CREATE DATABASE IF NOT EXISTS " . $db_name . " DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"; 

Sie Concat Backticks entfernen auch vermeiden können und var in quote verwenden (dies könnte nützlich sein, wenn Sie Backticks für reservierte Wort benötigen)

"CREATE DATABASE IF NOT EXISTS '$db_name' DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"; 
+0

Ich bin nicht die OP, aber Backticks sind nicht auf Interpolation bezogen, es ist eine mysql-Sache. Wenn die Idee ist, nur die Backticks zu entfernen, sollte es auch in Anführungszeichen arbeiten und einfach die Variable ohne Verkettung verwenden. – FirstOne

+0

Da es so aussieht, als ob das op Datenbanken dynamisch erstellen möchte, benötigen einige Namen Backticks. Sehen Sie sich das erste Beispiel von [diese Antwort] an (http://stackoverflow.com/a/11321523/4577762) – FirstOne

+0

@FirstOne Das OP in dieser Frage will nicht die Backtikcs .. das ist eine einfache Lösung .. Es gibt viele andere .. Lösung .. Sie können Ihre, wenn Sie möchten .. – scaisEdge