Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Не могу определить ошибку при создание класса PHP / 15 сообщений из 15, страница 1 из 1
16.07.2018, 14:37
    #39674518
Stang
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
Добрый день, не могу понять где ошибка, сам PHP ничего не выводит, причем даже если я специально пишу бред.
Вот я вызываю класс:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<?php

include_once 'config.php';
include_once 'Class/Database.php';


try {
		
        $db = new Database(HOST, USER, PASS, DB);

        echo "<b>Таблицы из нашей БД: </b><br/>";

        echo "<pre>";
        print_r($db->query("SHOW TABLES"));
        echo "</pre>";

        echo "<b>Список вопросов: </b><br/>";

        echo "<pre>";
        print_r($db->query("SELECT * FROM la_question"));
        echo "</pre>";

    } catch (Exception $e) {
        echo $e->getMessage() . ':(';
    }	
?>


на странице у меня отображается только:
авторТаблицы из нашей БД:

Список вопросов:

Вот сам класс:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
<?php

class Database {
	
	public $connection;
	
	public function __constructor ($host, $user, $pass, $db) {
		$this->connection = new mysqli ($host, $user, $pass, $db); // создаем подключение к БД через mysqli
		
		if ($this->connection) {
			echo 'Есть подключение к БД';
			// устанавливаем кодировку
			$this->query("SET NAMES UTF8");
		} else {

			// обрабатываем ошибку подключения к БД
			throw new Exception('Нет подключения к БД');
		}
		
		
	}
	// запрос
	public function query($sql) {
		// проверяем соединение
		if (!$this->connection) {
			return false;
		}
		// делаем запрос
		$result = $this->connection->query($sql);
		// проверяем на ошибки
		if (mysqli_error($this->connection)) {
			throw new Exception(mysqli_error($this->connection));
		}
		// если запрос не на получение данных, возвращаем его результат
		if (is_bool($result)) {
			return $result;
		}
		// получаем данные в массив
		$data = array();
		// while ($row = mysqli_fetch_assoc($result)) 
		while ($row = $result->feth_object()) {
			$data[] = $row;
		}
		// очищаем память и возвращаем результат
		return $data;
		mysqli_free_result($result);
		
	}
				
}
?>



Я если даже создаю объект $db и вместо констант подставляю любой бред, ошибка не возникает. Создаю любой другой класс, например с тупым конструктором и выводом сообщения "класс создан", все работает. Значит где-то проблемы в классе Database... Но ошибок нет, отображение ошибок включено. Помогите пожалуйста! Не использую IDE.
...
Рейтинг: 0 / 0
16.07.2018, 20:59
    #39674683
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
Смотрите класс этот, может там die используется к примеру.
...
Рейтинг: 0 / 0
16.07.2018, 21:02
    #39674684
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
А, класс то ваш, не сразу увидел. Посмотрите phpinfo, точно ли включился вывод ошибок? А то может не тот конфиг исправляете. error reporting тоже должен быть не нулевым.
...
Рейтинг: 0 / 0
16.07.2018, 21:50
    #39674695
d7i
d7i
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
У Вас
Код: php
1.
2.
3.
// очищаем память и возвращаем результат
		return $data;
		mysqli_free_result($result);


Может надо
Код: php
1.
2.
3.
// очищаем память и возвращаем результат
		mysqli_free_result($result);
		return $data;
...
Рейтинг: 0 / 0
17.07.2018, 08:31
    #39674805
Stang
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
d7iУ Вас
Код: php
1.
2.
3.
// очищаем память и возвращаем результат
		return $data;
		mysqli_free_result($result);


Может надо
Код: php
1.
2.
3.
// очищаем память и возвращаем результат
		mysqli_free_result($result);
		return $data;


Да это я уже извращался, пытался по всякому, добавлял всякие проверки, забыл назад вернуть. Результат не меняется, хоть так, хоть этак, хоть без очищения вообще.
...
Рейтинг: 0 / 0
17.07.2018, 08:49
    #39674810
Stang
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
HettА, класс то ваш, не сразу увидел. Посмотрите phpinfo, точно ли включился вывод ошибок? А то может не тот конфиг исправляете. error reporting тоже должен быть не нулевым.
А можно подробней? Я только учусь. Вообще, я искал инфу и вроде надо было так:
авторdisplay_errors
Default Value: On
Development Value: On
Production Value: Off

display_startup_errors
Default Value: Off
Development Value: On
Production Value: Off

error_reporting
Default Value: E_ALL
Development Value: E_ALL
Production Value: E_ALL
...
Рейтинг: 0 / 0
17.07.2018, 08:58
    #39674813
Stang
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
Может я как-то в массив не правильно записываю? Там закомментил один вариант, потом пробовал в другой. Может у меня массив нулевой получается? Как бы вы посоветовали этот кусок кода сделать?
Код: php
1.
2.
3.
4.
5.
$data = array();
		// while ($row = mysqli_fetch_assoc($result)) 
		while ($row = $result->feth_object()) {
			$data[] = $row;
		}
...
Рейтинг: 0 / 0
18.07.2018, 13:22
    #39675613
Stang
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
Блин, я в конструкторе убиваю все подключение к БД, пытаюсь вывести одну единственную строку - "есть связь". Когда я на index.php создаю объект $db, должно вывести мою строку, а дальше посыпаться ошибки! Ничего не меняется, по прежнему выводит только:
авторТаблицы из нашей БД:

Список вопросов:
Как так, получается даже конструктор при создание объекта не обрабатывается???? В php_error_log пусто, ошибок нет. Что за чудеса?
...
Рейтинг: 0 / 0
18.07.2018, 14:35
    #39675678
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
StangКак так, получается даже конструктор при создание объекта не обрабатывается????А нет в Вашем коде конструктора. Есть какая-то функция public function __constructor, которая нигде не вызывается.

У конструктора имя метода другое - __construct(), читайте мануал: http://php.net/manual/ru/language.oop5.decon.php
...
Рейтинг: 0 / 0
18.07.2018, 14:51
    #39675694
Stang
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
vkleА нет в Вашем коде конструктора. Есть какая-то функция public function __constructor, которая нигде не вызывается.

У конструктора имя метода другое - __construct(), читайте мануал: http://php.net/manual/ru/language.oop5.decon.php

Пойду я застрелюсь... Неделю мозги себе выносил! Вроде же и не копипастил код, надо же так лохонуться.... Спасибо друг!

Вопрос, почему не было ошибки при вызове метода? Ведь переменная $connection нигде тогда не определялась... Почему без конструктора вообще не было ошибок? Ну нет, конструктора, нет подключения к БД, остальное то должно было обрабатываться, вызывался метод...
...
Рейтинг: 0 / 0
18.07.2018, 15:09
    #39675700
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
StangПочему без конструктора вообще не было ошибок?Класс вполне обходится без явно определенного конструктора - это норма. Ну а до появления ошибки код не успевает доработать, метод query() благополучно завершается на проверке
Код: php
1.
2.
3.
		if (!$this->connection) {
			return false;
		}
...
Рейтинг: 0 / 0
18.07.2018, 16:20
    #39675760
Stang
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
vkleКласс вполне обходится без явно определенного конструктора - это норма. Ну а до появления ошибки код не успевает доработать, метод query() благополучно завершается на проверке
Код: php
1.
2.
3.
		if (!$this->connection) {
			return false;
		}



Не, не доходило выполнение до этого кода, я пробовал вставлять вывод сообщения в этот кусок, перед возвратом false. Или и не должно было? Чтобы хоть понимать в будущем такие ошибки.
...
Рейтинг: 0 / 0
18.07.2018, 16:27
    #39675763
Stang
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
А еще меня интересует вопрос по куску моего кода:

Код: php
1.
2.
3.
4.
// while ($row = mysqli_fetch_assoc($result)) 
while ($row = $result->feth_object()) {
$data[] = $row;
}



Правильно отрабатывает как раз закомментированный код, можно пояснить почему, или может ссылкой в меня ткнуть? Спасибо.
...
Рейтинг: 0 / 0
18.07.2018, 16:59
    #39675781
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
Массив и объект - всё же, разные вещи.
Может, Вам подойдет mysqli_fetch_all() вместо цикла?
...
Рейтинг: 0 / 0
18.07.2018, 18:22
    #39675815
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу определить ошибку при создание класса PHP
Stang,

feth_object vs fetch_object
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Не могу определить ошибку при создание класса PHP / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]