2014-08-14 8 views
0

Я работаю над пользовательской базой данных и настроил ее так, чтобы выпадающие меню в моей регистрационной форме принимали значения из таблиц в базе данных. Проблема в том, что когда я его тестировал, выпадающие списки были пустыми. Естественно, первое, что я сделал, это проверить и проверить мою связь. Для подключения к базе данных, у меня есть файл с именем BaseDAO.php, который содержит следующее:Не удается подключиться к базе данных (php)

<?php 

    class BaseDAO { 

     const SQL_HOST = "localhost"; 
     const SQL_USER = "user6538"; 
     const SQL_PW = "sdWf234Fg"; 
     const SQL_DB = "userDB"; 

     protected $con = null; 

     function connect() { 
      $this->con = mysql_connect(self::SQL_HOST, self::SQL_USER, self::SQL_PW); 
      if(!$this->con) {die('Could not connect to MySQL host: ' . self::SQL_HOST . ' Error: ' . mysql_error()); } 
      echo "Connected!"; //NOTE: I only just added this to test it 
      mysql_select_db(self::SQL_DB); 
     } 

     function close() { 
      mysql_close($this->con); 
     } 

    } 

?> 

Так, чтобы проверить это, я добавил echo "Hello World!"; вне класса, так же, как ссылки, а затем я добавил connect(); прямо под ним. Я открыл свою страницу и увидел только Hello World! ... Итак, я попробовал echo connect(); и снова ничего. Затем я попробовал это:

$baseDAO = new BaseDAO(); 
$baseDAO->connect(); 

И все же ничего не было. Тогда я закомментирована весь класс и только прибавил:

<?php 

    //... 
    //Commented out class 
    //.... 

    function connect() { 
     $con = mysql_connect("localhost", "user6538", "sdWf234Fg"); 
     if(!$con) { echo "3"; die('Could not connect: ' . mysql_error()); } 
     echo "Connected!"; 
    } 

    echo "Hello World!"; 
    connect(); 

?> 

И вот выход был таков:

Hello World!Connected! 

Я не понимаю, почему мой класс не работает ... Это объясняет, почему мои выпадающие списки не работают, поскольку их файлы DAO требуют моего BaseDAO.

Может, кто-нибудь захочет просветить меня на том, что здесь происходит? Почему мой класс не будет работать?

ПРИМЕЧАНИЕ: Я использую старый проект друга как руководство, поэтому теоретически мой BaseDAO.php должен работать, так как он работал.

EDIT: Исправлены аргументы во втором подключении функции

+0

Добавить публику перед вашими функциями 'public function connect()' – Daan

+0

Все еще не сработало ... – Laya302

+0

Вы прокомментировали класс, но все же в вашей функции вы используете 'self :: SQL_HOST', как Работает? Он, безусловно, вызывает функцию, но ваши аргументы не имеют смысла для функции mysql_connect –

ответ

0
class BaseDAO { 

    private static $SQL_HOST = "localhost"; 
    private static $SQL_USER = "user6538"; 
    private static $SQL_PW = "sdWf234Fg"; 
    private static $SQL_DB = "userDB"; 

    protected static $con = null; 

    public static function connect() { 
     self::con = mysql_connect(self::SQL_HOST, self::SQL_USER, self::SQL_PW); 
     if(!self::con) {die('Could not connect to MySQL host: ' . self::SQL_HOST . ' Error: ' . mysql_error()); } 
     echo "Connected!"; //NOTE: I only just added this to test it 
     mysql_select_db(self::SQL_DB); 
    } 

    public static function close() { 
     mysql_close(self::con); 
    } 

} 

() Для подключения выполните следующим не нужно создавать экземпляр класса, потому что его статическое:

BaseDAO::connect(); 
+0

Это не сработало для меня. – Laya302

+0

как вы пытаетесь вызвать функции? Какая ошибка это дает? – Daan

+0

Я называю это прямо вне класса. когда я открываю страницу, это просто пусто .. даже мой Hello World не будет печатать сейчас ... – Laya302

0

The возвращение значение mysql_connect является FALSE в случае ошибки. 0 - положительное значение. Чтобы быть уверенным, сделать это изменение:

if(self::con === FALSE) {die('Could not connect to MySQL host: ' . self::SQL_HOST . ' Error: ' . mysql_error()); } 

Ваш второй SQL, где ты удалить CLASS части, не может работать, но это странно делает.

$con = mysql_connect(self::SQL_HOST, self::SQL_USER, self::SQL_PW); 

У вас нет констант self ::, если класс не существует. В этом случае PHP должен был выпустить сообщение об ошибке. Поэтому ваше описание не так и что-то не хватает.

+0

Как я уже сказал, это была ошибка вставки папок, см. Edit. – Laya302

Смежные вопросы