За последние 24 часа нас посетили 20274 программиста и 1009 роботов. Сейчас ищут 375 программистов ...

Не удается получить данные из таблиц PostgreSql

Тема в разделе "PHP и базы данных", создана пользователем olyahaandro, 22 мар 2019.

  1. olyahaandro

    olyahaandro Новичок

    С нами с:
    21 мар 2019
    Сообщения:
    15
    Симпатии:
    0
    Добрый вечер. Исходные данные по проблеме: PHP версии 7, postgresql-11, фреймворк yii2. Проблема следующая: судя по всему, запрос не проходит до сервера postgres. Как это проявляется и чем сопровождается:
    1.
    PHP:
    1. $sql = "SELECT * FROM public.\"Standart\"";
    2. $command = pg_query($sql) or die('Ошибка запроса: ' . pg_last_error());
    3. $query = pg_fetch_array($command, null, PGSQL_ASSOC)
    При этом command и query - NULL-ы. Команда findAll также возвращает NULL, хотя при отсутствии данных для вывода должна возвращать пустой массив.
    2. Подключение существует, его использует фреймворк для формирования модулей с помощью "yii code generator".
    Было подозрение, основанное на этом источнике (https://sites.google.com/site/paxde...yii-2-i-postgresql---nastrojka-php-i-yii-2-db), о том, что строка "extension=php_pgsql.dll" в файле php.ini закомментирована. Расскомментировала, но ничего не изменилось.
    Напишите, пожалуйста, если встречались с подобным. Заранее спасибо.
     
    #1 olyahaandro, 22 мар 2019
    Последнее редактирование: 22 мар 2019
  2. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    А зачем использовать обратные слеши?

    А на прямую sql запрос проверял, без php?
    --- Добавлено ---
    Если убрать слеши, то логика получается, какая то не понятная.
     
  3. olyahaandro

    olyahaandro Новичок

    С нами с:
    21 мар 2019
    Сообщения:
    15
    Симпатии:
    0
    Слеши нужны, чтобы передать запрос с внутренними кавычками. Да, такой запрос релевантен.
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @olyahaandro, и что это означает?
    Код (Text):
    1. SELECT * FROM public."Standart"
     
  5. olyahaandro

    olyahaandro Новичок

    С нами с:
    21 мар 2019
    Сообщения:
    15
    Симпатии:
    0
    Выбор всех данных из view под названием "standard". Вас что-то смущает?
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    А public тогда что?
     
  7. olyahaandro

    olyahaandro Новичок

    С нами с:
    21 мар 2019
    Сообщения:
    15
    Симпатии:
    0
    Честно, не знаю. Это запрос самого pgAdmin- а при выводе всех строк, я ничего нового не придумала
     
  8. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @olyahaandro, после того как раскомментировали строку вы сервер перезагружали?
     
  9. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
  10. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Первый способ воспроизвести вашу проблему - это передать невалидный ресурс в pg_query, поэтому попробуйте прямо указать соединение.

    PHP:
    1. $connection = pg_connect("host=127.0.0.1 dbname=test user=postgres password=password");
    2. $sql = "SELECT * FROM public.\"random_with_weight\" LIMIT 10";
    3.  
    4. // $connection первым параметром
    5. $command = pg_query($connection, $sql) or die('Ошибка запроса: ' . pg_last_error());
    6. $query = pg_fetch_array($command, null, PGSQL_ASSOC);
    7. var_dump($query);
    Второй способ - продолжение первого, а именно неправильный $connection_string. База на месте? Юзер/пароль? У юзера есть доступ к базе? Разрешен ли вообще доступ по паролю с IP?

    Короче, так или иначе - нет коннекта.
    --- Добавлено ---
    схема
     
    miketomlin нравится это.
  11. olyahaandro

    olyahaandro Новичок

    С нами с:
    21 мар 2019
    Сообщения:
    15
    Симпатии:
    0
    Спасибо за помощь, но это все равно не работает. Как я уже писала:
    Плюс, когда пароль был неверным, yii2 все-таки выдавал ошибку. Доступы все есть, пользователь - Postgres. Разбираюсь дальше.