」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼在存取資料庫結果時出現「嘗試取得非物件的屬性」錯誤?

為什麼在存取資料庫結果時出現「嘗試取得非物件的屬性」錯誤?

發佈於2024-11-18
瀏覽:222

Why am I getting the

嘗試存取非物件的屬性

嘗試從資料庫擷取資料時,遇到錯誤「嘗試取得屬性非物件的。」當當您嘗試存取null 或不存在的物件的屬性時,會發生此錯誤。

在您的特定場景中,您的控制頁上有以下代碼:

$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);
$sidemenus = mysql_fetch_object($results);

在您的視圖頁面上:

foreach ($sidemenus as $sidemenu): 
  echo $sidemenu->mname."<br />";
endforeach; 

錯誤的產生是因為 mysql_fetch_object() 傳回一個對象,而不是對象數組。因此,在“視圖”頁面中,您嘗試迭代不可迭代的對象,這會導致錯誤。

解決方案:

要解決此問題,您應該:

  • 將結果轉換為array:
$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);

$sidemenus = array();
while ($sidemenu = mysql_fetch_object($results)) {
    $sidemenus[] = $sidemenu;
}

這會將結果轉換為物件數組,然後您可以在「視圖」頁面中對其進行迭代。

  • 使用 PDO:

PDO 提供了一種更現代、更有效率的與資料庫互動的方式。 PDOStatement::fetchAll(PDO::FETCH_OBJ) 傳回一個物件數組,類似於您期望從 mysql_fetch_object() 獲得的功能。

$stmt = $con->prepare("SELECT * FROM sidemenu WHERE `menu_id` = :menu_id ORDER BY `id` ASC LIMIT 1");
$stmt->bindParam(':menu_id', $menu);
$stmt->execute();

$sidemenus = $stmt->fetchAll(PDO::FETCH_OBJ);

透過利用這些解決方案中的任何一個,您可以從資料庫中檢索資料並避免錯誤“嘗試獲取非物件的屬性。 “

最新教學 更多>
  • 在 C++ 中如何將浮點數精確轉換為具有指定十進位精確度的字串?
    在 C++ 中如何將浮點數精確轉換為具有指定十進位精確度的字串?
    將浮點數精確轉換為具有指定十進制精度的字串在C 中,將浮點數轉換為具有特定精度的字串,並且小數位需要仔細考慮。本指南探討了兩種常見的解:stringstream 和 C 17 中的 to_chars 函數。 使用 StringstreamStringstream 是 C 中操作字串的多功能工具。要將...
    程式設計 發佈於2024-11-18
  • \“需要協助修改預設行事曆選擇器的 UI\”
    \“需要協助修改預設行事曆選擇器的 UI\”
    嗨,團隊,我在 AG 網格單元中使用日曆,但我無法修改此日曆的 UI,也無法檢查它。我想更改日曆的 UI。 請參閱連結以取得更多說明 https://www.ag-grid.com/examples/provided-cell-editors-date/date-editor/modules/ty...
    程式設計 發佈於2024-11-18
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-11-18
  • 為什麼我在 MySQL 中收到「寫入檔案『/tmp/MY1fnqpm』時出錯(錯誤代碼:28)」?
    為什麼我在 MySQL 中收到「寫入檔案『/tmp/MY1fnqpm』時出錯(錯誤代碼:28)」?
    MySQL 檔案寫入錯誤(Errcode 28):診斷與解決遇到錯誤「Errorwriting file '/tmp/MY1fnqpm' ( Errcode: 28)」 在MySQL 查詢中,根本原因通常在於可用磁碟空間不足。要確認這一點,請使用 perror 指令:$ perror...
    程式設計 發佈於2024-11-18
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-18
  • 如何使用 Sequelize CLI 從 Sequelize 模型產生遷移?
    如何使用 Sequelize CLI 從 Sequelize 模型產生遷移?
    使用Sequelize CLI 從Sequelize 模型自動產生遷移人們可能擁有預先存在的Sequelize 模型,但希望使用遷移而不是資料庫同步。 Sequelize CLI 提供了一篇文章中概述的解決方案,其中指出,「當利用CLI 進行模型生成時,您將自動獲取必要的遷移腳本。」要實現此任務: ...
    程式設計 發佈於2024-11-18
  • 為什麼Selenium 2.53.0在使用Firefox 47時會遇到連線錯誤?
    為什麼Selenium 2.53.0在使用Firefox 47時會遇到連線錯誤?
    Selenium 2.53 與Firefox 47 不相容使用Selenium WebDriver 2.53.0 時,遇到錯誤:org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1...
    程式設計 發佈於2024-11-18
  • 如何建立您的第一個 Web 應用程式:將想法變為現實的初學者指南
    如何建立您的第一個 Web 應用程式:將想法變為現實的初學者指南
    您对网络应用程序有一个想法,但您不确定如何或从哪里开始?构建 Web 应用程序听起来令人畏惧,特别是如果这是您第一次。然而,一步一步地,任何人都可以将他们的想法变成现实,只关注非常重要的组成部分。您将获得可操作的提示和资源,以及有关如何构建您的第一个 Web 应用程序的清晰路线图。 第 1 步:了...
    程式設計 發佈於2024-11-18
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-18
  • 如何只檢索 LEFT JOIN 中的第一行?
    如何只檢索 LEFT JOIN 中的第一行?
    僅檢索LEFT JOIN 中的第一行在SQL 中,執行LEFT JOIN 操作可能會導致右表中出現多行與左表中的一行相符。在某些情況下,希望為左表中的每一行僅檢索右表中的第一行。 考慮以下簡化的資料結構:**Feeds** id | title | content -----------------...
    程式設計 發佈於2024-11-18
  • 如何修復 C++ 中指標與整數之間的比較錯誤
    如何修復 C++ 中指標與整數之間的比較錯誤
    C 中的比較錯誤:指針與整數在Bjarne Stroustrup 的C 書籍第三版開發人員中嘗試編譯一個簡單函數時可能會遇到編譯時錯誤:error: ISO C forbids comparison between pointer and integer將指標與整數進行比較時會出現此問題。在提供...
    程式設計 發佈於2024-11-18
  • 為什麼我的 Keras 模型僅在資料集的一部分上進行訓練?
    為什麼我的 Keras 模型僅在資料集的一部分上進行訓練?
    Keras 訓練資料差異在按照官方TensorFlow 指南使用Keras 建立神經網路時,您注意到該模型僅使用儘管有60,000個條目,但訓練期間可用資料集的一部分。 了解批量大小模型擬合期間顯示的數字 1875 並不表示訓練樣本,而是表示批次數量。 model.fit 方法有一個可選參數,bat...
    程式設計 發佈於2024-11-18
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-18
  • 為什麼推遲 GZIP Writer 關閉會導致 Go 中的資料遺失?
    為什麼推遲 GZIP Writer 關閉會導致 Go 中的資料遺失?
    延遲GZIP Writer 關閉會導致資料遺失延遲GZIP Writer 關閉會導致資料遺失在Go 中,使用defer 關閉gzip.Writer 可能會導致意外的EOF 錯誤從壓縮資料中讀取。要解決此問題,讓我們深入研究問題的具體情況並提供替代解決方案。 理解問題:func zipData(ori...
    程式設計 發佈於2024-11-18

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3