Я здесь впервые, поэтому надеюсь, что вы мне поможете. Это моя проблема:
Я занят сценарием входа в систему в oop.
У меня готовы следующие классы:
класс базы данных
это просто класс подключения / отключения
класс запросов расширяет класс базы данных
существует только 1 функция, которая принимает только строку запроса и передает ее через базу данных, а затем возвращает массив с данными.
логин
этот класс будет получать информацию для входа в систему и получать информацию о пользователе из базы данных.
это структура папок:
/
/cgi-bin -> holds the database and query class
/libraries -> holds the login class
Тогда осталось 2 файла, это index.php и global.php.
В моем индексе у меня есть это:
require_once('global.php');
print_r($login->userCheck('test'));
и это внутри моего global.php:
include('cgi-bin/database.php');
include('cgi-bin/query.php');
include('libraries/login.lib.php');
$login = new Login();
это мой логин
class Login extends Query{
public function Login(){
}
public function userCheck($userCredentials){
$result = $this->qString('SELECT * FROM users');
return $result;
}
}
и мой класс запросов
class Query extends Database{
function qString($qString){
//Start connection with database
$this->conncect();
$result = $this->db->query($qString);
// fetch associative array
while ($row = mysqli_fetch_assoc($result)) {
$data[] = $row;
}
// free result set
mysqli_free_result($result);
//Close connection with database
$this->disconnect();
//Check mysqli connection
//print_r(explode(' ', mysqli_stat($this->db)));
return $data;
}
}
и класс базы данных:
class Database {
//Private variables for database connection.
private $server;
private $usern;
private $userp;
private $database;
//The database object.
protected $db;
function Database(){
$dbCredentials = explode(',',file_get_contents('cgi-bin/dbcredentials.txt'));
$this->server = $dbCredentials[0];
$this->usern = $dbCredentials[1];
$this->userp = $dbCredentials[2];
$this->db = $dbCredentials[3];
}
protected function conncect(){
$this->db = mysqli_connect($this->server, $this->usern, $this->userp, $this->db);
}
protected function disconnect(){
mysqli_close($this->db);
}
}
теперь, когда я запускаю это, он говорит это:
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\Login\cgi-bin\query.php on line 11
Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\Login\cgi-bin\query.php on line 16
Notice: Undefined variable: data in C:\xampp\htdocs\Login\cgi-bin\query.php on line 25
Почему я получаю эту ошибку?
Изменить 12-10-2011:
Я обнаружил, в чем была ошибка.
просто чтобы поделиться с вами:
Ошибка состояла в том, что конструкция из класса базы данных никогда не выполнялась.
Из-за этого детали соединения, такие как имя пользователя и пароль, никогда не устанавливались в частные переменные, и при этом они никогда не могли соединиться.
В результате запрос никогда не может быть запущен из класса входа в систему.
В конце концов, все было довольно просто.