Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Shvarko
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 18
1

PHP и PDO(Singleton)

26.07.2016, 21:18. Просмотров 392. Ответов 11
Метки нет (Все метки)

Здравствуйте. Нуждаюсь в Вашей помощи, второй день ламаю голову над решением проблемы.Хочу вывести все данные из существующей таблицы id с бд learn используя шаблон singleton(в целях обучения)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
require('db_singleton.php');
 
define('HOST', 'localhost');
define('USER', 'root');
define('PASS', '');
define('DB','learn');
 
database::getInstance();//инициализация класса для работы с бд
 
 
$res = database::fquery("SELECT * FROM id");
 
echo $res;
?>
Добавлено через 54 секунды
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
<?
class database
{
    protected static $instance;
    
    public static function getInstance()
    {
        if(is_null(self::$instance))
        {
            self::$instance = new self;
        }
        return self::$instance;
    }
    private function __construct()
    {
        $opt = array(
            PDO::ATTR_ERRMODE               =>  PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE    =>  PDO::FETCH_ASSOC);
        try{
            $this->pdo = new PDO("mysql:host=".HOST.";DB_name=".DB,USER,PASS,$this->opt);
            }catch(PDOException $x){
                die('подключение не удалось '. $x->getMessage().
                    '<br />ошибка на строчке '. $x->getLine()   );
        }
    }
    private function __clone()  {} //запрещаем клонирование обьектов
    private function __wakeup() {} //
    
    public static function fquery($sql)
    {
        $obj = self::$instance;
        
        if(isset($obj->pdo))
        {
            $obj->count_sql++;
            $result = $obj->pdo->prepare($sql);
            $result -> execute();
            echo "<br/><span style='color:blue'># Запрос номер ".$obj->count_sql."<br />".$obj->result;
            
                return $result->fetchAll;
        }
                return false;
    }
    
}
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2016, 21:18
Ответы с готовыми решениями:

PHP и PDO(Singleton)
Здравствуйте. Нуждаюсь в Вашей помощи, второй день ламаю голову над решением...

Php,pdo, mysql+php,
К примеру у меня есть функция добавления в бд через PDO Так вот, а если я...

PHP PDO
include('connect.php'); $busynamequery = $pdo-&gt;prepare('SELECT * FROM...

PHP, PDO, POST, INSERT
Есть несколько баз данных, для удобства редакторования, администратор...

PHP PDO UPDATE неработает
вот запрос $sql = &quot;UPDATE calculators SET name = :name , url = :url ,...

11
Streletz
26.07.2016, 21:19
  #2

Не по теме:

Цитата Сообщение от Shvarko Посмотреть сообщение
второй день ламаю голову над решением проблемы.Хочу вывести все данные из существующей таблицы id с бд learn используя шаблон singleton(в целях обучения)
А, вопрос-то в чём?

0
Shvarko
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 18
26.07.2016, 21:21  [ТС] 3
Но в итоге у меня выводит только:"
# Запрос номер 1"

Добавлено через 1 минуту
Ой,блин,дико извиняюсь.Вопрос в том,где ошибки,которые не дают взять существующие данные с таблицы?Заранее благодарен тем,кто поможет.Очень выручите
0
Streletz
282 / 222 / 59
Регистрация: 07.04.2014
Сообщений: 1,435
26.07.2016, 21:45 4
Цитата Сообщение от Shvarko Посмотреть сообщение
Но в итоге у меня выводит только:"
# Запрос номер 1"
Вероятно, дальше код не выполняется из-за критической ошибки.
Цитата Сообщение от Shvarko Посмотреть сообщение
Вопрос в том,где ошибки,которые не дают взять существующие данные с таблицы?
Я бы посоветовал для начала включить отображение ошибок в PHP. Это часто помогает понять, что к чему.
0
Shvarko
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 18
27.07.2016, 12:47  [ТС] 5
Если включение ошибок выглядит так
PHP
1
2
ini_set('display_errors','On');
error_reporting('E_ALL');
То ничего оно не меняет((
0
Jodah
Эксперт PHP
2709 / 2380 / 1014
Регистрация: 01.08.2012
Сообщений: 8,409
27.07.2016, 13:24 6
Цитата Сообщение от Shvarko Посмотреть сообщение
PHP
1
return $result->fetchAll;
Скобок нет.

Добавлено через 1 минуту
Цитата Сообщение от Shvarko Посмотреть сообщение
echo $res;
Если fetchall возвращает массив, проверять его надо через var_dump/print_r, а не echo.
0
Shvarko
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 18
27.07.2016, 14:47  [ТС] 7
убрал эти недочеты.Теперь выводит:# Запрос номер 1
Array ( )
Походу в массив ничего не попадает,но не могу понять почему, в бд информация есть.В обычном простом mysql примере всё выводит, а вот с pdo не разберусь никак
0
Jodah
Эксперт PHP
2709 / 2380 / 1014
Регистрация: 01.08.2012
Сообщений: 8,409
27.07.2016, 15:23 8
Цитата Сообщение от Shvarko Посмотреть сообщение
"SELECT * FROM id"
Таблица точно id называется?

Покажите итоговый код со всеми правками.
0
Shvarko
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 18
27.07.2016, 15:34  [ТС] 9
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
ini_set('display_errors','On');
error_reporting('E_ALL');
 
require('db_singleton.php');
 
define('HOST', 'localhost');
define('USER', 'root');
define('PASS', '');
define('DB','learn');
 
database::getInstance();//инициализация класса для работы с бд
 
 
$res = database::fquery("SELECT * FROM id");
 
print_r($res);
?>
файл db_singleton.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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?
 
class database
{
    protected static $instance;
    
    public static function getInstance()
    {
        if(is_null(self::$instance))
        {
            self::$instance = new database();
        }
        return self::$instance;
    }
    private function __construct()
    {
        $opt = array(
            PDO::ATTR_ERRMODE               =>  PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE    =>  PDO::FETCH_ASSOC);
        try{
            $this->pdo = new PDO("mysql:host=".HOST.";DB_name=".DB,USER,PASS,$this->opt);
            }catch(PDOException $x){
                die('подключение не удалось '. $x->getMessage().
                    '<br />ошибка на строчке '. $x->getLine()   );
        }
    }
    private function __clone()  {} //запрещаем клонирование обьектов
    private function __wakeup() {} //
    
    public static function fquery($sql)
    {
        $obj = self::$instance;
        
        if(isset($obj->pdo))
        {
            $obj->count_sql++;
            $result = $obj->pdo->prepare($sql);
            $result -> execute();
            
            echo "# Запрос номер ".$obj->count_sql."<br />";
            
                return $result->fetchAll();
        }
                return false;
    }
    
}
?>
0
Shvarko
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 18
27.07.2016, 15:35  [ТС] 10
вот скрин с phpmyadmin
0
Миниатюры
PHP и PDO(Singleton)  
Jodah
Эксперт PHP
2709 / 2380 / 1014
Регистрация: 01.08.2012
Сообщений: 8,409
27.07.2016, 15:42 11
Цитата Сообщение от Shvarko Посмотреть сообщение
$this->opt
на 21-ой строке, здесь должен быть просто $opt.
0
Shvarko
0 / 0 / 0
Регистрация: 02.06.2016
Сообщений: 18
27.07.2016, 15:49  [ТС] 12
убрал,теперь при выполнении скрипта выводится просто пустая страница,вообще никакого текста
0
27.07.2016, 15:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2016, 15:49

PHP Data Objects (PDO)
Доброго всем дня. Нахожусь на этапе познания PDO. Вот в чем вопрос: ...

PHP PDO проверка на пустой запрос
Подключаюсь к базе: $host = &quot;localhost&quot;; $db = &quot;db&quot;; $user = &quot;user&quot;;...

PHP PDO не обновляет данные в MySQL
Приветствую форумчане. Не могу понять, почему следующий код не обновляет в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru