错误:可捕获的致命错误:类mysqli_result的对象无法转换为字符串

时间:2014-03-18 07:57:55

标签: php

我正在使用mysqli进行以下操作

$name = trim($_GET['uname']);
$pswd = trim($_GET['password']);
$connection = new dbconnection();
$con = $connection->connectToDatabase();

$login_check = mysqli_query($con, "SELECT *  FROM `vendor` WHERE `username` = 'admin' AND `password` = 'admin' AND `vendorType` = 0");

print($login_check);
     if ($login_check)
     {
         echo "details is there";
     }
     else
     {
         echo "details none";
     }

当我删除打印($ login_check);线

它给出了"细节是"错误的信息

5 个答案:

答案 0 :(得分:1)

if ($login_check)
即使没有找到记录,

也会返回true。

尝试将其更改为:

if($login_check->num_rows > 0)

检查是否找到了任何行。

答案 1 :(得分:0)

$login_check是对象资源,无法使用echoprint进行打印。

您应该使用循环(最可能是while)遍历结果集,并显示/分配查询中的输出数据。

答案 2 :(得分:0)

mysqli_query会返回mysqli_result个对象,使用print($login_check);时无法将其转换为字符串。

您可以使用mysqli_result::$num_rows来检查结果的编号。

$login_check = mysqli_query($con, "SELECT * FROM `vendor` WHERE `username` = 'admin' AND `password` = 'admin' AND `vendorType` = 0");

if ($login_check->num_rows > 0) {
     echo "details is there";
} else {
     echo "details none";
}

更好的是,如果您只想查看是否存在,可以将SELECT *更改为SELECT 1

答案 3 :(得分:0)

您应该使用输出错误方法:

echo $mysqli->error;

也尝试使用mysqli::debug($message)

进行调试

答案 4 :(得分:0)

$login_check = mysqli_query($con, "SELECT *  FROM `vendor` WHERE `vendorType` = 0");
$info = mysqli_fetch_array( $login_check ); 

     if (($info['username']==$name) && ($info['password']==$pswd))
     {
         echo "details is there";
     }
     else
     {
         echo "details none";
     }

它会起作用..