簡體   English   中英

當有數據時,從 php/mysqli 查詢中沒有得到任何結果行/字段

[英]Getting no result rows/fields from php/mysqli query while there is data

對問題的解釋是:

  • 查詢sql在phpMyAdmin中運行時返回6行數據(每行14個字段)
  • 在php頁面mysqli_num_rows返回:6
  • print_r($sql_res)返回: mysqli_result Object ( [current_field] => 0 [field_count] => 14 [lengths] => [num_rows] => 6 [type] => 0 )
  • var_dump($sql_res)返回: object(mysqli_result)#1 (5) { ["current_field"]=> int(0) ["field_count"]=> int(14) ["lengths"]=> NULL ["num_rows"]=> int(6) ["type"]=> int(0)

數據庫中有數據,但沒有被解析到表結構中,因為沒有返回包含字段值的數據。 任何幫助或指示將不勝感激。 數據庫連接正常,我的其他頁面正在工作,我在查詢中使用會話變量($selected 和 $selfair),我的 php 代碼令人頭疼的是:

<?php
$sql = "SELECT har_id, har_fair_id, har_kat_id, har_tarih, har_co_id, har_desc, har_docno, har_kur, har_debit, har_credit, har_used, har_invoiced, har_cancelled, har_schid FROM hareketler WHERE har_co_id =". $selected." AND har_fair_id =". $selfair;
echo $sql."<br><br>";
//sql returns correct statement
$sql_res = mysqli_query($con, $sql);
print_r($sql_res)."<br><br>";
echo "<br><br>".mysqli_num_rows($sql_res);
// row count is 6 but no other data is fetched from db!
echo "<br><br>".var_dump($sql_res);
while($row = mysqli_fetch_array($sql_res,MYSQLI_ASSOC));{
// detail rows are NOT fetched!
    if($row<>''){
    echo '<tbody>';
        echo '<tr>';
            echo '<td class="katdata">'.$row['har_id'].'</td>';
            echo '<td class="katdata">'.$row['har_fair_id'].'</td>';
            echo '<td class="katdata">'.$row['har_kat_id'].'</td>';
            echo '<td class="katdata">'.$row['har_tarih'].'</td>';
            echo '<td class="katdata">'.$row['har_co_id'].'</td>';
            echo '<td class="katdata">'.$row['har_desc'].'</td>';
            echo '<td class="katdata">'.$row['har_docno'].'</td>';
            echo '<td class="katdata">'.$row['har_kur'].'</td>';
            echo '<td class="katdata">'.$row['har_debit'].'</td>';
            echo '<td class="katdata">'.$row['har_credit'].'</td>';
            echo '<td class="katdata">'.$row['har_used'].'</td>';
            echo '<td class="katdata">'.$row['har_invoiced'].'</td>';
            echo '<td class="katdata">'.$row['har_cancelled'].'</td>';
            echo '<td class="katdata">'.$row['har_schid'].'</td>';
        echo '</tr>';
    echo '</tbody>';
    }
    else {
        echo "<br><br>No data returned!";
        // sql is correct but no detail data is fetched!
    }
}
?>

你有一個錯字:

while($row = mysqli_fetch_array($sql_res,MYSQLI_ASSOC));{

應該

while($row = mysqli_fetch_array($sql_res,MYSQLI_ASSOC)){

感謝所有人(@ kerbholz,@ Raymond Nijland,@ verhie,@ dela和@Rup)幾乎所有人的幫助。 感謝您的指導和建議。 不幸的是,由於給出了答案,我不知道如何關閉這篇文章。

您必須確保要比較的值周圍有一個單引號(')。 例如

SELECT * FROM table WHERE column_name = 'value';

會工作,但是

SELECT * FROM table WHERE column_name = value;

不管用。

因此,請確保您的輸出是:

SELECT har_id, har_fair_id, har_kat_id, har_tarih, har_co_id, har_desc, har_docno, 
har_kur, har_debit, har_credit, har_used, har_invoiced, har_cancelled, har_schid 
FROM hareketler WHERE har_co_id ='selected' AND har_fair_id ='selfair';

為此,請將您的 sql 更改為

$sql = "SELECT har_id, har_fair_id, har_kat_id, har_tarih, har_co_id, har_desc, 
har_docno, har_kur, har_debit, har_credit, har_used, har_invoiced, har_cancelled, 
har_schid FROM hareketler WHERE har_co_id ='". $selected."' AND har_fair_id ='". 
$selfair."';";

這應該可以解決您的問題,並且您的 while 循環中有一個錯位的分號。 while($row = mysqli_fetch_array($sql_res,MYSQLI_ASSOC));{ . 您需要解決這個問題,謝謝,希望這對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM