Почему не срабатывает SQL запрос?

Здравствуйте! Есть такой простой скрипт, создающий БД с заданным именем, но по каким-то причинам
<?php
$create = $_POST['name'];
$link = mysqli_connect("localhost", "create", "****");

if (!$link) {
    echo "Ошибка: Невозможно установить соединение с MySQL." . PHP_EOL;
    echo "Код ошибки errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Текст ошибки error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

echo "Соединение с MySQL установлено!" . PHP_EOL;
echo "<br>Информация о сервере: " . mysqli_get_host_info($link) . PHP_EOL;
if (isset ($create)) {
$crquery = mysqli_query ($link, "CREATE DATABASE $db");
echo "<br>База данных успешно создана";
}
mysqli_close($link);
?>
<form method = "post">
    <br>Имя базы данных
    <br><input type = "text" name = "name">
    <input type = "submit" name = "Save" value = "Создать БД">
</form>

Отображение ошибок PHP включено, ошибок нет, но БД всё равно не создаётся. Почему?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
@Nc_Soft
CREATE DATABASE $db
$db чему равна?
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Wolfnsex
@Wolfnsex Куратор тега PHP
Если не хочешь быть первым - не вставай в очередь!
Выполните запрос от этого же пользователя без этого скрипта. В phpMyAdmin, или в консольном клиенте MySQL, или подключитесь к серверу удаленно... Тогда мы будем знать, ли это в скрипте, или проблема в том, что у пользователя, под которым Вы работаете в БД - не хватает прав на создание базы. А вообще, после запроса, на создание БД - нужно ещё раз проверять ошибки...
Ответ написан
Комментировать
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Вы ловите имя базы, которую надо создать тут $create = $_POST['name'];
А при создании используете другу переменную "CREATE DATABASE $db"
Замените $db на $create. Или наоборот. Это раз.
Два - не забудьте про валидацию данных $_POST.
Ответ написан
Комментировать
ravshanium
@ravshanium
аналитик, веб-программист
а если: php.net/manual/ru/mysqli.error.php
...
$crquery = mysqli_query ($link, "CREATE DATABASE $db");
if ( $crquery === false ){
  echo mysqli_error($link);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы