2016-05-04 194 views
1

我当前正试图从数据库的多个表中读取数据并以表格形式显示结果。mysqli_fetch_row()在mysqli_query()返回true时返回false

但是mysqli_query()返回truemysqli_fetch_row()返回false。 $link是已初始化的连接对象。

代码段1:

$sql = " 
    SELECT * 
    FROM users_list, user_personal_details, user_bank_details 
    WHERE 
     users_list.email = user_personal_details.email AND 
     users.email=userbank_details.email 
    LIMIT $num_rec_per_page 
    OFFSET $start_from"; 

$rs_result = mysqli_query($link, $sql); 

if ($rs_result == false) { 
    echo "Query failed"; 
    exit(); 
} 
else echo "Query successful"; 

代码段2:

$row = mysqli_fetch_row($rs_result); 
if ($row == false) 
    echo "Invalid"; 

while ($row = mysqli_fetch_row($rs_result)) { 
    echo "In loop"; 
    $name = $row['name']; 
    $date_added = $row['date_added']; 
    echo $name; 
    echo $date_added; 
} 

mysqli_fetch_row()已使用外循环用于调试目的。 消息查询成功已打印。 消息打印无效。 可能是什么原因?

+1

可能是您的查询返回true,但可能有可能它不会返回任何结果。使用'mysqli_num_rows()'检查您的查询返回的行数 – Saty

+0

并且您的读取行是两次 – Saty

+1

'mysqli_fetch_row()'返回'array'不是'boolean'例如'$行= mysqli_fetch_row($ rs_result); if($ row == false)' – Abbasi

回答

0

可能是您的查询返回true,但可能不会返回任何结果。请使用mysqli_num_rows()检查您的查询返回的行数。

而且不取行两次

$sql = "SELECT * FROM users_list,user_personal_details,user_bank_details where users_list.email=user_personal_details.email and users.email=userbank_details.email LIMIT $num_rec_per_page OFFSET $start_from"; 
    $rs_result = mysqli_query($link, $sql); //run the query 
    if ($rs_result == false) { 
     echo "Query failed"; 
     exit(); 
    } else { 
     $data = mysqli_num_rows($rs_result); 
     if ($data > 0) { 
      while ($row = mysqli_fetch_row($rs_result)) { 
       $name = $row['name']; 
       $date_added = $row['date_added']; 
       echo $name; 
       echo $date_added; 
      } 
     } else { 
      echo "No result found"; 
     } 
    } 
1

你叫mysqli_fetch_row()两次,也许你会得到false上第二个。