2014-09-05 60 views
0

Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\xampp\htdocs\xxx\dash.php on line 20對象無法轉換爲MySQLi中的字符串PHP

我是一個相當新的人,而且是一個老派的編碼員,只是使用mysql_result來獲取這些數據,我不知道如何去做這件事。我有一個類 - >功能設置。

dash.php的20行包含:

echo $user->GetVar('rank', 'Liam', $mysqli); 

雖然,功能:

function GetVar($var, $username, $mysqli) 
    { 
     $result = $mysqli->query("SELECT " . $var . " FROM users WHERE username = '" . $username . "' LIMIT 1"); 
     return $result; 
     $result->close(); 
    } 

現在,我的理解,我意思是$結果轉換成字符串,但我不完全知道如何去做。我嘗試過使用一些方法,但無濟於事。所以我來到社區希望得到答案,我也環顧四周,但注意到所有其他線程都要求num_rows,而我只是想從查詢select中獲取字符串。

+2

你必須首先獲取它,首先收集結果,然後返回你想要的方式,一個數組等,其實它在PHP [手動](http://php.net/manual/en/mysqli-stmt .fetch.php) – Ghost 2014-09-05 13:15:08

+0

沒錯。你實際上試圖返回的是一個(raw?)MySQLi對象,它當然不能作爲字符串轉換。 另外。 $ result-> close永遠不會被執行;由於您在return語句後關閉連接,因此只需提及。 – 2014-09-05 13:24:56

回答

3

您必須首先獲取它,然後再回顯結果。粗糙的例子:

function GetVar($var, $username, $mysqli) { 
    // make the query 
    $query = $mysqli->query("SELECT ".$var." FROM users WHERE username = '".$username."' LIMIT 1"); 
    $result = $query->fetch_assoc(); // fetch it first 
    return $result[$var]; 
} 

然後使用你的函數:

echo $user->GetVar('rank', 'Liam', $mysqli); 

重要提示:由於你開始,查收約prepared statements。不要直接附加用戶輸入的查詢。

0

閱讀本教程。它解釋瞭如何從dataabse

Select Data From a Database Table

+0

我明白了,但事情是我沒有抓取數組,我正在抓取函數抓取的單個字符串。例如,我想從用戶那裏獲取密碼,但是我在一個函數中使用它。 – Reverb 2014-09-05 13:18:10

+1

@Reverb如果您的查詢只返回一行'$ row = mysqli_fetch_array($ result)'將返回該行 '$ row = mysqli_fetch_array($ result);' '$ user_name = $ row ['username']; ' – Susantha 2014-09-05 13:21:35

+0

@Reverb你沒有獲取「單個字符串」,你從數據庫中得到一個*結果集*;即使該結果集只包含具有單列的單個行。 – deceze 2014-09-05 13:24:23

0
if ($result = $mysqli->query($query)) { 
    while($row = $result->fetch_object()) { 
      echo row['column_name']; 
     } 
} 
$result->close(); 

在那裏你看到「COLUMN_NAME把你想從字符串的列名讀取和顯示數據。

+0

我最直的道歉,我一定不會把線頭弄清楚。我正在使用函數來檢索數據。我已經更新了這個功能。 – Reverb 2014-09-05 13:20:11

+0

$結果不能轉換爲字符串,因爲它是一個數組 – 2014-09-05 13:21:58