2016-08-09 5 views
1
$db_name = 'myDbName'; 
CREATE DATABASE IF NOT EXISTS `$db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

В тот момент, когда эти две инструкции выполнены, база данных создается, но ее имя «myDbName», включая кавычки.
Если я удалю кавычки в первой строке, я получу ошибку PHP, и если я удалю со второго, я получу ошибку mySql.
Есть ли способ удалить их/создать базу данных с правильным именем без прямого доступа к СУБД?
я действительно предпочитаю не жёстко имени во второй строкеСоздание новой базы данных с использованием php/PDO с использованием переменной в качестве имени базы данных

Заранее спасибо за ответы

+0

Просто, чтобы убедиться, что вы знаете, он называется '' myDbName'' с кавычками? – FirstOne

+0

Попробуйте выполнить эхо-запрос перед его запуском. Проверьте источник страницы, чтобы узнать, что выводится тоже. – FirstOne

+0

@FirstOne, я проверил его из СУБД.
Но я не хочу, чтобы конечный пользователь имел к нему доступ. – Vkfan

ответ

2

Вы можете использовать строку CONCAT и удалить кавычку

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

вы также можете избежать CONCAT и использовать var внутри цитаты (это может быть полезно, если вам нужны обратные выходы для зарезервированного слова)

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

Я не op, но обратные ссылки не связаны с интерполяцией, это вещь mysql. Если идея состоит в том, чтобы просто удалить обратные элементы, она также должна работать с использованием двойных кавычек и просто использовать var без конкатенации. – FirstOne

+0

Поскольку похоже, что операционная система хочет динамически создавать базы данных, некоторым именам могут потребоваться обратные ссылки. Взгляните на первый пример из [этого ответа] (http://stackoverflow.com/a/11321523/4577762) – FirstOne

+0

@FirstOne OP в этом вопросе не хочет backtikcs .. это простое решение .. есть много других .. решение .. вы можете разместить свое, если хотите .. – scaisEdge