Как выбрать базу данных MySQL в php? - PullRequest
0 голосов
/ 12 февраля 2009

У меня есть этот код:

               if(!mysql_connect($host,$user,$passwd)){
                    die("Hoops, error! ".mysql_error());
                }

... отсюда нет ошибок.

                if(!mysql_select_db($db,$connect)){
                    $create_db = "CREATE DATABASE {$db}";
                    mysql_query($create_db,$connect);
                    mysql_query("USE DATABASE {$db}",$connect);
                }

... ошибка "база данных не выбрана". Я хотел бы выбрать базу данных, если она существует, а если нет, то создать ее и выбрать ее.

Почему мой код не верен?

Заранее спасибо

Ответы [ 7 ]

3 голосов
/ 12 февраля 2009

Где вы сохраняете значение, возвращаемое mysql_connect ()? Не вижу здесь. Я предполагаю, что $ host, $ user, $ password и $ db правильно установлены заранее. Но вы передаете в mysql_select_db параметр, который может быть неправильно установлен.

$connect = mysql_connect($host,$user,$passwd);
if (!$connect) {
    die('Could not connect: ' . mysql_error());
}
if(!mysql_select_db($db,$connect)) ...

Начните с проверки, можете ли вы сначала выбрать без запроса CREATE. Попробуйте запустить простой запрос SELECT. Если вы можете подключиться, выберите базу данных и выполните запрос SELECT, это один шаг. Затем попробуйте запрос CREATE. Если это не сработает, это почти наверняка вопрос разрешения.

1 голос
/ 12 февраля 2009

Почему бы просто не использовать СОЗДАТЬ БАЗУ ДАННЫХ, ЕСЛИ НЕ СУЩЕСТВУЕТ синтаксис ?

Как то так ...

  $con = mysql_connect('localhost');
  $sql = 'CREATE DATABASE IF NOT EXISTS {$db}';
  if (mysql_query($sql, $con)) {
    print("success.\n");
  } else {
    print("Database {$db} creation failed.\n");
  }
  if(!mysql_select_db($db,$connect)){
    print("Database selection failed.\n");
  }
1 голос
/ 12 февраля 2009

Возможно, вам понадобятся разрешения на создание базы данных для пользователя, пытающегося создать базу данных. Затем вам нужно работать с действительным ресурсом соединения. $ connect никогда не выглядит назначенным для ресурса соединения.

0 голосов
/ 20 февраля 2009

Я хотел бы поблагодарить всех вас, однако я нашел ошибку на моей стороне. Этот скрипт был в классе, и одна из переменных не была определена внутри этого класса. Так что мне очень жаль. Я не знаю, как найти правильный ответ, но я заметил свою ошибку после прочтения ответа Клейтона о неправильно заданных параметрах, поэтому я думаю, что он победитель;)

0 голосов
/ 18 февраля 2009

вы можете попробовать сайт w3schools. У них есть очень простой и легкий в освоении учебник по выбору базы данных. Ссылка: http://www.w3schools.com/php/php_mysql_select.asp Надеюсь, что это поможет:)

0 голосов
/ 12 февраля 2009

Изменить строку

mysql_query($create_db,$connect);
mysql_query("USE DATABASE {$db}",$connect);

Для

mysql_query($create_db,$connect);
mysql_select_db($db);*

и должно работать.

0 голосов
/ 12 февраля 2009

Вы должны проверить возвращаемое значение mysql_query () - в настоящее время, если какой-либо из этих вызовов потерпит неудачу, вы не узнаете об этом:

if(!mysql_select_db($db,$connect)){
    if (!mysql_query("CREATE DATABASE $db", $connect)) {
        die(mysql_error());
    }

    if (!mysql_select_db($db, $connect)) {
        die(mysql_error());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...