2016-02-22 3 views
-1

У меня есть следующая проблема с pg_fetch_array(), это код:PG_FETCH_ARRAY() не возвращает данные

//Controllo utente 
     $u= "SELECT FROM utente WHERE idutente = '$username' and password= '$password'"; 
                $result = pg_query($db,$u) or die(pg_last_error()); 

                //Controllo query 
                if(!$result) {echo "problemi con la query"." ".$u;} 

                $tuplaUtente = pg_fetch_array($result); 

                //Numero di tuple 
                if($tuplaUtente === false) {echo "error fetch";} 
                else 
                 { echo $tuplaUtente['idutente']; 
                  echo "else"; 
                  } 

                pg_close(); 

Этот код показывает только «еще», несмотря на использование PgAdmin «$ U» запрос возвращает корректный результат.

Infact, если я типа в последний еще:

           else 
               { 
                var_dump($tuplaUtente); 
               echo $u; 
               echo "else"; 
               } 
                } 

              pg_close(); 

Он показывает "массив (0) {} SELECT FROM WHERE utente idutente = 'USR' и пароль =«pwd'else".

+1

Вы проверяете '$ tuplaUtente === false' - это проверяет, является ли' $ tuplaUtente' логическим false, что ваш var_dump показывает, что это не так: вы получаете пустой массив, а не false. Я подозреваю, что ваш запрос не находит достоверных результатов, в отличие от сбоев. – andrewsi

+0

Попробуйте 'echo pg_num_rows ($ result)', чтобы убедиться, что были возвращены записи. – Jerrad

+1

Спасибо, я изменил else в этом режиме: { echo "else". "С номером" .pg_num_rows ($ result). "". $ Tuplautente ['idutente']; } Он возвращает: «еще с номером 1». –

ответ

0

Этот запрос:

SELECT FROM utente WHERE idutente = '$username' and password= '$password' 

не возвращает столбец как прокомментировал @Jerrad.

Это используется как недействительные SQL, прежде чем PostgreSQL 9.4, но допускается с тех пор, увидеть Release Notes:

E.7.3.3. Запросы

[...]

Разрешить ВЫБРАТЬ иметь пустой список целей (Tom Lane)

Отсутствие любого выходного столбца поэтому массив, возвращаемый pg_fetch_array пуст: результат сам имеет одну строку, но нулевой столбец.

Это, очевидно, ошибка в запросе: учитывая остальную часть кода, он должен иметь как минимум столбец idutente сразу после SELECT.

Смежные вопросы