Объект класса mysqli_stmt не может быть преобразован в строку при выполнении - PullRequest
0 голосов
/ 16 мая 2018

Ошибка:

PHP Пойманная фатальная ошибка: объект класса mysqli_stmt не может быть преобразован в строку в common.php в строке 33

Я знаю, что есть много тем с этим названием, но я прочитал все, и ни одна из них не похожа на мой код, в строке 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 голосов
/ 16 мая 2018

Как отмечалось в комментариях, вы пытаетесь выразить объект 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...