Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 sqlsrv_fetch_数组未获取select查询的第一行_Php_Sql Server_Sqlsrv - Fatal编程技术网

Php sqlsrv_fetch_数组未获取select查询的第一行

Php sqlsrv_fetch_数组未获取select查询的第一行,php,sql-server,sqlsrv,Php,Sql Server,Sqlsrv,我的选择查询: $query = "SELECT SERVER_NAME FROM AUDIT_Customer_Polling_details WHERE PRODUCT_NAME='".$product."' "; $result = sqlsrv_query($con,$query)or die("Couldn't execute slect query".print_r(sqlsrv_errors(), true)); 我的循环代码是: if($row = sqlsrv_fetch_a

我的选择查询:

$query = "SELECT SERVER_NAME FROM AUDIT_Customer_Polling_details WHERE PRODUCT_NAME='".$product."' ";
$result = sqlsrv_query($con,$query)or die("Couldn't execute slect query".print_r(sqlsrv_errors(), true));
我的循环代码是:

if($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC) != Null){                               
   while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC))
   {
      echo $row['SERVER_NAME'];
      echo "\n";
   }
}
我也试过:

if( sqlsrv_fetch( $result ) === false) {
      die( print_r( sqlsrv_errors(), true));
}                   
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC))
{
     echo $row['SERVER_NAME'];
     echo "\n";
}
它没有任何错误。但是while循环穿过存在的第一行。

删除if条件,因为调用此if$row=sqlsrv\u fetch\u array$result,sqlsrv\u fetch\u ASSOC!=空的

你可能想考虑使用这个。

if($result=== true)
{
   while( $row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC))
   {
      echo $row['SERVER_NAME'];
      echo "\n";
   }
}

最后,我从代码中删除了if条件。它工作正常。最终代码是:

 $query = "SELECT SERVER_NAME FROM AUDIT_Customer_Polling_details WHERE PRODUCT_NAME='".$product."' "; 
 $result = sqlsrv_query($con,$query)or die("Couldn't execute slect query".print_r(sqlsrv_errors(), true)); 

 while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC)) {
      echo $row['SERVER_NAME'];
      echo "\n"; }

我像你说的那样进行了修改,但ui$result=sqlsrv_query$con,$queryor无法执行slect query.print\u rsqlsrv_errors,true;;如果$result===true{而$row=sqlsrv_fetch_array$result,sqlsrv_fetch_ASSOC{echo$row['SERVER_NAME'];}}您可以添加此回显结果吗:;var_dump$结果;回响结果:类型为SQL Server语句的resource11这是我在使用echo$query时得到的结果;从我的数据库中获取数据,如从审计中选择服务器\u名称\u客户\u轮询\u详细信息,其中PRODUCT\u NAME='xxx'这应该足够了:$result=sqlsrv\u query$con,$query;如果$result==false{echo Error sqlsrv_query:.print_rsqlsrv_errors,true;exit;}而$row=sqlsrv_fetch_array$result,sqlsrv_fetch_ASSOC{echo$row['SERVER_NAME'].}sqlsrv_free_stmt$result;。并且,尝试使用参数化查询来防止SQL注入攻击。
 $query = "SELECT SERVER_NAME FROM AUDIT_Customer_Polling_details WHERE PRODUCT_NAME='".$product."' "; 
 $result = sqlsrv_query($con,$query)or die("Couldn't execute slect query".print_r(sqlsrv_errors(), true)); 

 while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC)) {
      echo $row['SERVER_NAME'];
      echo "\n"; }