2013-05-01 100 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)

最好的问候!

相关问题