Проблема при получении результатов из таблицы PostgreSQL с помощью PDO - PullRequest
0 голосов
/ 03 мая 2018

У меня есть база данных с именем testDB и одна таблица test_tbl в ней с тремя полями ID, пользователь, пароль в базе данных PostgreSQL на Mac OS X.

Я использую следующий php-код для получения результатов из таблицы.

<?php
try {
    $dbuser = 'postgres';
    $dbpass = 'test123';
    $dbhost = 'localhost';
    $dbname='testDB';

    $connec = new PDO("pgsql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
} catch (PDOException $e) {
    echo "Error : " . $e->getMessage() . "<br/>";
    die();
}

$sql = 'SELECT ID, User, Pass FROM test_tbl ORDER BY ID';

foreach ($connec->query($sql) as $row) {
    print $row['ID'] . " ";
    print $row['User'] . "-->";
    print $row['Pass'] . "<br>";
}

Возникает следующая ошибка:

Warning: Invalid argument supplied for foreach() in /Users/nikko/Sites/pg_conn2.php on line 12

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Postgres не учитывает регистр имен полей

SELECT anyfield, id FROM mytable;

SELECT AnyField, ID FROM mytable;

Оба будут работать.

Может быть, проблема в том, что PDO цитирует имена полей, как в

SELECT "AnyField", "ID" FROM mytable;

Вы можете прочитать журнал Postgres на вашем сервере, чтобы увидеть фактическое утверждение.

Кроме того, вы должны перехватить $connec->query($sql) перед использованием его в качестве массива. Возможно, PDO возвращает false в результате при запросе неверно сформированного утверждения.

0 голосов
/ 04 мая 2018

Я смог решить проблему. Существует проблема с PostgreSQL, если вы используете заглавные буквы в именах полей таблицы базы данных, тогда возникает это исключение. Я изменил поля на маленькие заглавные буквы, и он начинает работать. - Никко только сейчас редактирую

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...