2016-08-26 57 views
-1

我有關於這個問題的搜索stackoverflow。儘管看起來像關於這個話題有很多問題,但他們中沒有一個能夠解決我的問題。 我有一個fetch_assoc()非對象錯誤。我正在使用MySQLi和PHP 5.2。我沒有選擇改變這一點。這裏是我寫的php代碼,這讓我錯誤。PHP錯誤和MySQLi fetch_asoc()

<?php 
include '_includes/db.php'; 

$faculty_id = trim($_GET['faculty_id']); 

$message = ''; 
include '_includes/connection.php'; 
if ($db->connect_error) { 
    $message = $db->connect_error; 
} else { 
    $sql = "SELECT * FROM faculty WHERE faculty_id = $faculty_id"; 
    $result = $db->query($sql); 
    $row = $result->fetch_assoc(); 
    if ($db->error) { 
     $message = $db->error; 
    } 
} 

任何想法爲什麼會發生這種情況?

+1

與您在StackOverflow中已經找到的相關問題中出現的原因完全相同。錯誤的原因不會改變。如果'$ result'不是一個對象,PHP不可能調用它的方法。你需要檢查'$ db-> query' __actually__首先返回一個對象,因爲[當查詢失敗時它將返回'false'](http://php.net/mysqli-query)。 'false'是__not一個object__。你不能在__not object__上調用一個方法。 – Sherif

+0

您的查詢失敗。直到嘗試使用由失敗返回的布爾值false之後,才能檢查失敗,從而觸發其他失敗。除此之外,你很容易受到[sql注入攻擊](http://bobby-tables.com) –

+0

我有這個代碼運行在其他應用程序中,在同一臺服務器上,但不同的表,因爲是其他應用程序。你的[鏈接](http://stackoverflow.com/questions/2973202/mysqli-fetch-array-mysqli-fetch-assoc-mysqli-fetch-row-expects-parameter-1)解釋了錯誤的原因是我在查詢中有無效的語法,我看不到錯誤在哪裏。 – Gilbert

回答

-1

正如評論所指出的,該行:

$result = $db->query($sql) 

失敗。這意味着查詢失敗。所以$result正在分配false

換行線在這樣的if語句,看看它輸出:

if ($result = $db->query($sql)) { 
    echo "Success"; 
} else { 
    echo "Failure"; 
} 

如果輸出則未能確保所有數據庫字段名是正確的,你有一個有效的數據庫連接。

+0

如果不是數據庫字段名稱並且連接良好會怎麼樣? –

+0

我仍在處理這個問題。我有兩個不同的應用程序從同一個數據庫運行,但從兩個不同的表中提取數據。是相同的代碼,我只是改變我的代碼中的表和字段。一旦工作完美,另一個不完美。我包含這個代碼來調試'if($ result = $ db-> query($ sql))echo「Success」; } else { echo「Failure」; }'但是返回空白頁面。主頁拉動數據就好了。我無法進入編輯或刪除頁面。我現在已經看了這個代碼9個小時,並且無法弄清楚發生了什麼。 – Gilbert

+0

問題不在於代碼。如果你沒有收到任何迴應,那麼你的配置就會出現問題。該頁面上還有其他輸出是否正確? –