簡體   English   中英

無法從MySQL數據庫獲取數據

[英]Data is not fetched from MySQL database

我正在嘗試從數據庫中獲取數據,但沒有提供任何輸出。 它僅顯示“所有費用”。 我的代碼如下:

<?php
        include 'preCode.php';
        include 'header.php';

        echo '<body><div class="standardLayout">';
        include 'systemMenu.php';
        echo '<h4>All Charges</h4>';

          $user = unserialize($_SESSION['user']);
          echo $query = "SELECT * FROM billingItems WHERE userID=' " . $user-> userID .  " ' ORDER BY deliveryTimestamp DESC"; 
          $result = mysqli_query($db, $query);
         while ($row = mysqli_fetch_array($result)) {

        echo  $row['type'] . '<br>' . 
                'Cost: $' . $row['amount'] . '<br>' . 
                ' Finalized: ' . $row['deliveryTimestamp']  ;

}
        echo '</div></body></html>';

        $_SESSION['user'] = serialize($user);
        include 'footer.html';
?>

這是echo $query;的輸出echo $query;

所有費用對象(用戶)#2(11){[“” orders“] => NULL [” fName“] =>字符串(6)” kimmie“ [” lName“] =>字符串(4)” kaur“ [”地址“] =>字符串(10)” 6768bbnmmn“ [”電話“] =>字符串(11)” 66767798898“ [”電子郵件“] =>字符串(6)” kimmie“ [” userID“] =>字符串(3 )“ 108” [“ password”] =>字符串(4)“ kaur” [“ passwordX”] => NULL [“ amountOwed”] =>字符串(1)“ 0” [“ zip”] =>字符串(6 )“ 768798”} SELECT * FROM billingItems WHERE userID ='108'ORDER BY deliveryTimestamp DESC

在我看來您的查詢構建是一個問題,因為這

$query = "SELECT * FROM billingItems WHERE userID=' " . $user-> userID .  " ' ORDER BY deliveryTimestamp DESC";

如果ID為“ bob”,則將為您提供此信息。

SELECT * FROM billingItems WHERE userID=' bob ' ORDER BY deliveryTimestamp DESC

您正在ID周圍嵌入空格,該空格與列的內容不匹配。

執行此操作的更安全方法是使用准備好的語句並綁定參數,這樣您就不會遇到此類錯誤。 它還可以使您免受SQL注入的傷害。 有關詳細信息,請參見此問題: 如何防止PHP中的SQL注入?

暫無
暫無

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

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