Я попросил 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);