亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試獲取非對象的屬性適用于頁面的一部分,但不適用于其他部分

嘗試獲取非對象的屬性適用于頁面的一部分,但不適用于其他部分

PHP
神不在的星期二 2023-11-03 20:13:01
我正在使用準備好的語句從 MySQL 數據庫中檢索一行,該語句在特定值等下運行良好(在 phpmyadmin 中測試)。我經常<?php echo (htmlspecialchars($row_feed->f_text)); ?>在頁面的第 400 行顯示它,然后在第 900 行再次顯示它(它是實際的復制粘貼)。第一個實例按預期顯示結果,第二個實例拋出錯誤:Uncaught Customizable_Exception: Trying to get property 'f_text' of non-object in C:\xampp\htdocs\bbto.eu\index.php:878這怎么可能呢?我已經檢查過,該$row_feed變量不會重復用于中間的其他內容,并且它在同一文件中的幾行中工作正常。唯一的問題是第一個實例位于此循環內,while($row_feed = $feed->fetch_object()) {  }而另一個實例位于循環關閉后,但從什么時候開始有任何影響呢?最小可重現示例:$sql = "SELECT * FROM feed";$statement = $mysqli->prepare($sql);if(!$statement->execute()) { die("Query error: ".$statement->error); } $feed = $statement->get_result();while ($row_feed = $feed->fetch_object()) {echo (htmlspecialchars($row_feed->f_text));}### other stuff going onecho (htmlspecialchars($row_feed->f_text));我在第二次回顯時收到錯誤。
查看完整描述

1 回答

?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

唯一的問題是,第一個實例位于此循環 while($row_feed = $feed->fetch_object()) { } 內,而另一個實例位于循環關閉后,但從什么時候開始有任何影響呢?


對查詢結果執行這樣的 while 循環的基本原理是,fetch當沒有更多記錄需要處理時,調用將返回 NULL,這就是使循環在此時終止的原因。所以當然在你的循環之后,$row_feed是NULL。


如何重用 $row_feed 的最后一個值


將其存儲到while 循環內的另一個變量中$last_row = $row_feed;:這將在每次循環迭代中被覆蓋,因此只有最后一個值會在循環后“生存”。由于它在循環內部$row_feed = $feed->fetch_object(),因此當結果為 NULL時,該行將不再執行。


while ($row_feed = $feed->fetch_object()) {

  echo htmlspecialchars($row_feed->f_text);

  $last_row = $row_feed;

}

### other stuff going on

echo htmlspecialchars($last_row);


查看完整回答
反對 回復 2023-11-03
  • 1 回答
  • 0 關注
  • 167 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號