Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP: базы данных

Войти
Регистрация
Восстановить пароль
 
 
artem55555p
23 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 231
#1

Как подключить postgresql - PHP БД

27.10.2016, 12:39. Просмотров 1698. Ответов 47
Метки нет (Все метки)

Здравствуйте. Имеется класс, где я подключил mysql:
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
class Db
{
 
    /**
     * Устанавливает соединение с базой данных
     * @return \PDO <p>Объект класса PDO для работы с БД</p>
     */
    public static function getConnection()
    {
        // Получаем параметры подключения из файла
        $paramsPath = ROOT . '/config/db_params.php';
        $params = include($paramsPath);
 
        // Устанавливаем соединение
        $dsn = "mysql:host={$params['host']};dbname={$params['dbname']}";
        $db = new PDO($dsn, $params['user'], $params['password']);
 
        // Задаем кодировку
        $db->exec("set names utf8");
 
        return $db;
    }
 
}
и файл db_params:
PHP
1
2
3
4
5
6
7
8
9
<?php
 
// Массив с параметрами подключения к базе данных
return array(
    'host' => 'localhost',
    'dbname' => 'mvc_site',
    'user' => 'root',
    'password' => '',
);
вопрос, как мне подключить postgresql??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2016, 12:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как подключить postgresql (PHP БД):

Как правильно подключится к postgreSQL ? - PHP БД
Как подключится к postgreSQL? Нужно подключится к БД potgeSQL и результаты вывести в JSON формате. Делаю так: &lt;?php ...

jpgraph. КАК ПОДКЛЮЧИТЬ? - PHP
как подключить jpgraph-1.27.1 к ПХП? Добавлено через 4 минуты &lt;?php // подключим библиотеки include (&quot;...jpgraph.php&quot;); ...

Как подключить mysql - PHP БД
У меня PHP Version 7.0.5 и apache2.4 - какую последовательность действий мне надо сделать чтобы у меня заработал mysql Вот такой код:...

Как подключить sqlite - PHP БД
Друзья скажите как правильно установить модуль php sqlite У меня PHP Version 7.0.5 В мануале написано что с версии PHP 5.4, расширение...

Как подключить шаблон к php - PHP
Учусь самописные сайты делать, не могу понять как к index.php подклячить html или tpl шаблоны ?? (или какой самый проще подцепить ?? без...

Как правильно подключить файл? - PHP БД
Доброго времени суток. У меня такая проблема случилась. Есть файл fal.php&lt;?php echo &quot;поле1:&quot; . $_POST; echo &quot;поле2:&quot; . $_POST; echo...

47
Para bellum
Эксперт PHP
3143 / 2906 / 643
Регистрация: 06.01.2011
Сообщений: 8,486
27.10.2016, 16:35 #31
Так, ладно. Пользователь есть, пароль к нему точно правильный указываете?
0
artem55555p
23 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 231
27.10.2016, 16:38  [ТС] #32
не уверен, я просто создал щас таблицу эту. как посмтреть там пароль?
0
Миниатюры
Как подключить postgresql  
Para bellum
Эксперт PHP
3143 / 2906 / 643
Регистрация: 06.01.2011
Сообщений: 8,486
27.10.2016, 16:44 #33
Посмотреть не выйдет, установите новый. Документация по смене: https://www.postgresql.org/docs/8.0/static/sql-alteruser.html
0
artem55555p
23 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 231
27.10.2016, 16:47  [ТС] #34
а user какой поставить?
0
Para bellum
Эксперт PHP
3143 / 2906 / 643
Регистрация: 06.01.2011
Сообщений: 8,486
27.10.2016, 16:51 #35
Имя того пользователя, для которого меняете пароль. Если новый пользователь нужен -- указывайте любое имя.
0
artem55555p
23 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 231
27.10.2016, 16:53  [ТС] #36
так?
0
Миниатюры
Как подключить postgresql  
artem55555p
23 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 231
27.10.2016, 16:54  [ТС] #37
я так сделал и теперь такая ошибка: Fatal error: Call to a member function fetch() on a non-object in A:\home\test1.ru\www\models\Category.php on line 20

Добавлено через 48 секунд
тут у меня метод:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Category{
 
    /**
     * Возвращает массив категорий для списка на сайте
     * @return array <p>Массив с категориями</p>
     */
    public static function getCategoriesList(){
 
        $db = Db::getConnection();
 
        $categoryList = array();
 
        $result = $db->query('SELECT id, name FROM category ORDER BY sort_order ASC');
 
        $i=0;
        while($row = $result->fetch()){
            $categoryList[$i]['id']  = $row['id'];
            $categoryList[$i]['name']  = $row['name'];
            $i++;
        }
        return $categoryList;
    }
}
0
Para bellum
Эксперт PHP
3143 / 2906 / 643
Регистрация: 06.01.2011
Сообщений: 8,486
27.10.2016, 17:01 #38
Вот и замечательно. Всё заработало.
Цитата Сообщение от artem55555p Посмотреть сообщение
Fatal error: Call to a member function fetch() on a non-object
А дальше уж сами смотрите. Может у Вас таблицы нет, к которой запрос идёт, а может столбцов. Самый лучший вариант -- просто выводите ошибку выполнения запроса на экран.
Вот это сразу после 13 строки добавьте:
PHP
1
2
3
4
if(!$result){
    print_r($db->errorInfo());
    die;
}
И будет ясно, в чём ошибка.
0
artem55555p
23 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 231
27.10.2016, 17:04  [ТС] #39
а как импортировать базу данных с mysql?

Добавлено через 33 секунды
точнее у меня есть бд my sql, как мне ее в postgrex импортировать?
0
Para bellum
Эксперт PHP
3143 / 2906 / 643
Регистрация: 06.01.2011
Сообщений: 8,486
27.10.2016, 17:14 #40
Самое простое -- всю структуру пересоздать вручную. Но это подходит, если база маленькая. Сейчас конкретного чего-то сказать не могу, если честно -- сам не переносил ни разу.
Можете поискать что-то вроде "миграция с mysql на postgresql". Для переноса специальные инструменты использовать надо будет, скорее всего.
0
artem55555p
23 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 231
27.10.2016, 18:33  [ТС] #41
понял, спасибо большое, вы очень помогли. ну и гемон с этим посгрексом.... капец. Mysql намного роще и понятнее...

Добавлено через 1 час 17 минут
Вопрос. есть метод регистрции:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    /**
     * Регистрация пользователя
     * @param string $name <p>Имя</p>
     * @param string $email <p>E-mail</p>
     * @param string $password <p>Пароль</p>
     * @return boolean <p>Результат выполнения метода</p>
     */
    public static function register($name, $email, $password)
    {
        // Соединение с БД
        $db = Db::getConnection();
 
        // Текст запроса к БД
        $sql = 'INSERT INTO user2 (name, email, password) '
            . 'VALUES (:name, :email, :password)';
 
        // Получение и возврат результатов. Используется подготовленный запрос
        $result = $db->prepare($sql);
        $result->bindParam(':name', $name, PDO::PARAM_STR);
        $result->bindParam(':email', $email, PDO::PARAM_STR);
        $result->bindParam(':password', $password, PDO::PARAM_STR);
        return $result->execute();
    }
когда была подключена mysql все работало, запись добавлялась, сейчас на postgres на добавляется, т.е. не работает регистрация. в чем проблема?
0
Para bellum
Эксперт PHP
3143 / 2906 / 643
Регистрация: 06.01.2011
Сообщений: 8,486
27.10.2016, 18:54 #42
Точно не скажу -- можно проверить эмпирически.
Замените временно это:
PHP
1
return $result->execute();
На
PHP
1
2
3
4
if(!$result->execute()){
    print_r($db->errorInfo());
    die;
}
И скажите, что выведет данный код.
0
artem55555p
23 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 231
27.10.2016, 19:14  [ТС] #43
Array ( [0] => 00000 [1] => 7 [2] => ОШИБКА: нулевое значение в колонке "id" нарушает ограничение NOT NULL DETAIL: Ошибочная строка содержит (null, sdsdsdsd ..., pavel@mail.ru ..., qwewqdsadsa, null). )
я понял в чем проблема. у меня в таблице id и я задал его как первичный ключ, у меня вопрос, как мне быть?

Добавлено через 25 секунд
т.к. при регистрации, id вводить не надо? a_i поставить?

Добавлено через 13 минут
с регистрацией реши вопрос. еще вопрос.
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
abstract class AdminBase
{
 
    /**
     * Метод, который проверяет пользователя на то, является ли он администратором
     * @return boolean
     */
    public static function checkAdmin()
    {
        // Проверяем авторизирован ли пользователь. Если нет, он будет переадресован
        $userId = User::checkLogged();
 
        // Получаем информацию о текущем пользователе
        $user = User::getUserById($userId);
 
        // Если роль текущего пользователя "admin", пускаем его в админпанель
        if ($user['role'] == 'admin') {
            return true;
        }
        // Иначе завершаем работу с сообщением об закрытом доступе
        die('Access denied');
    }
 
}
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 /**
     * Возвращает пользователя с указанным id
     * @param integer $id <p>id пользователя</p>
     * @return array <p>Массив с информацией о пользователе</p>
     */
    public static function getUserById($id)
    {
        // Соединение с БД
        $db = Db::getConnection();
 
        // Текст запроса к БД
        $sql = 'SELECT * FROM user2 WHERE id = :id';
 
        // Получение и возврат результатов. Используется подготовленный запрос
        $result = $db->prepare($sql);
        $result->bindParam(':id', $id, PDO::PARAM_INT);
 
        // Указываем, что хотим получить данные в виде массива
        $result->setFetchMode(PDO::FETCH_ASSOC);
        $result->execute();
 
        return $result->fetch();
    }
тут если у пользователя role admin - он увидит страницу,у меня не работает, можете подсказать, как посмотреть ошибку?
0
Para bellum
Эксперт PHP
3143 / 2906 / 643
Регистрация: 06.01.2011
Сообщений: 8,486
27.10.2016, 19:41 #44
Просто распечатайте значение, содержащееся в $user['role']:
PHP
1
2
var_dump($user['role']); 
die;
И увидите, что в ней.
0
artem55555p
23 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 231
27.10.2016, 19:46  [ТС] #45
это в public static function checkAdmin() ??

Добавлено через 2 минуты
у меня пишет: string(5) "admin"
в чем проблема тогда?

Добавлено через 24 секунды
все, разобрался))

Добавлено через 12 секунд
стояло 255 символов, я поставил 5
0
27.10.2016, 19:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2016, 19:46
Привет! Вот еще темы с ответами:

Библиотека FPDF - как подключить ее к сайту - PHP
Привет всем! Народ, кто работал с этой библиотекой, подскажите, пожалуйста, как подключать её к сайту, что бы в PDF файле выводились...

как подключить оплату за товары по карте? - PHP
Вопрос, может, не по теме немного...но мне на сайт нужно прикрутить оплату за услуги. как это делать понятия не имею. находила только...

Проблемы с PostgreSQL - PHP БД
Добрый день. Есть проблема предположительно с Postgres. Есть сайт на котором одновременно идет 6 запросов в базу (запросы примитивны SELECT...

php и postgresql - PHP БД
Переделал код добавления mysql на postgresql, не работает, что не так помогите пожалуйста?ошибок нет, должно добавлять а не добавляет... ...


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

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

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