2013-05-01 120 views
0

我試圖通過PHP回顯顯示從數據庫表中的值。 MySQL的結果是雙倍(10,2)。PHP的MySQL - 致命的錯誤:函數名稱必須是一個字符串

<?php $link = new mysqli('127.0.0.1', '*******', '*******', '*******'); 
        if ($link->connect_errno) { 
         die('Failed to connect to MySQL: (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error); 
        } 
        $user = $_SESSION['user']; 
        $result = $link->query("SELECT * FROM users WHERE username='$user' AND active=1"); 
        $numrows = $result->num_rows; 
        if($numrows == 0 || $numrows > 1) 
        { 
         $link->close(); 
         session_destroy(); 
         echo '<META HTTP-EQUIV="Refresh" Content="0; URL=**************">'; 
         exit; 
        } 
        else if($numrows == 1) 
        { 
         //$sid = $result(8); 
         echo '<strong>this is my string in which i want to show the result in' . $result(8) . 'rest of the string';}?> 

錯誤顯示的行是回顯行(最後)。任何人都可以指出我在這裏做錯了嗎?謝謝。

+0

$ result是查詢(資源)的鏈接,您必須首先獲取結果。 – Waygood 2013-05-01 17:58:34

回答

1

$result變量是MySQLi Result。你想從結果集中得到一行。要做到這一點,請使用fetch_assoc。這將爲您提供一個關聯數組,其中包含表中的所有字段作爲關鍵字。

$row = $result->fetch_assoc(); 
echo $row['username']; 
echo $row['whatever']; 

編輯:這可能是有價值的注意,很容易受到以下風險:SQL injectioncross-site scripting和COOKIE篡改。

+0

由於OP使用(8)他們可能想'fetch_row();' – Waygood 2013-05-01 18:05:11

+0

謝謝,這工作得很好! – 2013-05-01 18:09:54

3

你打電話給$result(8)這是一個方法在PHP調用。我覺得你的意思

$dataRow = $result->fetch_array(MYSQLI_ASSOC); 
// collect whatever you need from the array $dataRow array 

由於PHP是一種解釋語言,你可以做這樣的事情作爲一個值賦給一個變量,並調用該變量

$func = 'myFunc'; 
$func(); // will call the function myFunc 
+0

$結果是非數組的資源 – Waygood 2013-05-01 17:59:50

+0

致命錯誤:不能使用mysqli_result類型的對象作爲數組 – 2013-05-01 18:01:21

+1

http://php.net/manual/en/mysqli.query.php失敗時返回FALSE。對於成功的SELECT,SHOW,DESCRIBE或EXPLAIN查詢,mysqli_query()將返回一個mysqli_result __object__。對於其他成功的查詢,mysqli_query()將返回TRUE。 – Waygood 2013-05-01 18:01:57

-1

看這 - $結果(8)(最後一行)。變量不能有參數。你可能想要$ result [8](數組中的第9個元素)。

0

您試圖訪問數組值,你必須使用:

$結果[8],而不是$結果(8)

最好的問候!

相關問題