Объект класса mysqli_result не может быть преобразован в строку

Я попросил Google помочь мне, мне не повезло. 🙁 Вот код, который генерирует ошибку:

$this->conn->query("UPDATE tz_members SET confirm='yes' WHERE usr='".$uname."'"); 

Вся функция такова:

  function update_confirm_field($code) { $uname = $this->conn->query("SELECT usr FROM tz_members WHERE confirm='".$code."'"); $this->conn->query("UPDATE tz_members SET confirm='yes' WHERE usr='".$uname."'"); } 

Простите меня, если я пропустил что-то глупое. Может ли кто-нибудь сказать мне, что вызывает проблему?

Проблема в том, что $ uname – это объект, а не строка. Вам нужно вызвать один из методов $ uname для доступа к данным.

  function update_confirm_field($code) { $uname = $this->conn->query("SELECT usr FROM tz_members WHERE confirm='".$code."'"); while ($row = $uname->fetch_assoc()) { $this->conn->query("UPDATE tz_members SET confirm='yes' WHERE usr='".$row["usr"]."'"); } } 

который должен это сделать (или одно из вышеуказанных решений).

$ uname, возвращаемое вашим первым запросом, является объектом mysql_result, а не строкой. вы должны получить данные из этого результата, чтобы использовать его во втором запросе.

 while ($row = mysql_fetch_assoc($result)) { echo $row["usr"]; } 

Метод query возвращает указатель / объект результата запроса, он не просто непосредственно сбрасывает ответ. Вам нужно сделать что-то вроде list($uname) = $uname->fetch_row;

 $updateQuery = "UPDATE tz_members SET confirm='yes' WHERE usr= (SELECT usr FROM tz_members WHERE confirm='".$code."')"; // Get name and update in the same query $this->conn->query($updateQuery);