2014-09-05 72 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