Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PG_FETCH_ARRAY()不返回任何数据_Php_Sql_Postgresql - Fatal编程技术网

Php PG_FETCH_ARRAY()不返回任何数据

Php PG_FETCH_ARRAY()不返回任何数据,php,sql,postgresql,Php,Sql,Postgresql,我对pg_fetch_数组有以下问题,代码如下: //Controllo utente $u= "SELECT FROM utente WHERE idutente = '$username' and password= '$password'"; $result = pg_query($db,$u) or die(pg_last_error());

我对pg_fetch_数组有以下问题,代码如下:

 //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();
此代码仅显示else,尽管使用了PgAdmin,$u查询返回正确的结果

事实上,如果我键入最后一个选项:

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

                                            pg_close();
它显示数组0{}SELECT FROM-ute,其中idutete='usr'和password='pwd'else。

此查询:

SELECT FROM utente WHERE idutente = '$username' and password= '$password'
不返回任何列,正如@Jerrad所评论的

这在PostgreSQL 9.4之前是无效的SQL,但从那时起允许使用,请参见:

E.7.3.3。询问

[……]

允许选择具有空的目标列表

由于缺少任何输出列,pg_fetch_数组返回的数组是空的:结果本身有一行,但没有列


这显然是查询中的一个错误:给定代码的其余部分,它至少应该在SELECT之后有idute列。

您正在检查$tuplaUtente===false-这是检查$tuplaUtente是否是布尔false,而var_转储显示它不是-您得到的是一个空数组,而不是false。我怀疑您的查询没有找到有效的结果,而不是失败。请尝试echo pg_num_rows$result验证是否有返回的记录。谢谢,我已在此模式下更改了else:{echo else.with number.pg_num_rows$result..$tuplautente['idutene'];}它返回:else,数字为1。在选择之后应该有一个列列表,如SELECT idutente FROM或SELECT*FROM。尽管我假设您的代码在pg_查询步骤中失败,但现在是这样……警告:编写自己的访问控制层并不容易,而且有很多机会会出现严重错误。在本书中举个例子,你有很多危险的东西都是因为你轻率的缺乏安全性。请不要编写你自己的身份验证系统,因为任何现代的类似系统都有一个强大的内置系统。