mysqli_stmt类的对象在执行

时间:2018-05-16 05:12:17

标签: php mysqli

错误:

  

PHP Catchable致命错误:类mysqli_stmt的对象不可能   在第33行的common.php中转换为字符串

我知道有很多主题都有这个标题,但我在第33行读了所有内容,而且没有类似于我的代码:

if (!$sql->execute()) {
echo "Error: " . $sql . "<br>" . $sql->error; // --> this is line 33
}

此部分属于此代码:

class User {
    public function getId(){

    global $connection;
    $id = $_COOKIE['userid'];
    $userid = $_COOKIE['auth'];

    $sql = $connection->prepare("SELECT tel, hash FROM seller WHERE id = ?");
    $sql->bind_param("s", $id);
    if (!$sql->execute()) {
    echo "Error: " . $sql . "<br>" . $sql->error;
    }
    $sql->bind_result($tel, $hash);
    $sql->fetch();
    $sql->close();

    if(md5($hash) == $userid){
        $result = $tel;
    } else {
        $result = 0;
    }
    return $result;
    }
}

今天早上我突然面对这个错误,而且之前的代码工作正常。没有改变我得到了这个错误。任何想法?

这种错误的有趣部分是,当我评论该行时,我将为另一个mysqli执行获得另一个类似的错误。为什么会这样?

我知道这个错误意味着什么,但它直到今天,我没有改变任何东西,它只是回应执行的错误。那为什么呢?

1 个答案:

答案 0 :(得分:0)

正如评论中指出的那样,您试图将mysqli_stmt对象($sql)表示为字符串,这是不可能的。你可能想这样做:

$query = "SELECT tel, hash FROM seller WHERE id = ?";
$sql = $connection->prepare($query);
$sql->bind_param("s", $id);
if (!$sql->execute()) {
    echo "Error: " . $query . "<br>" . $sql->error;
}