Obiekt klasy mysqli_result nie może zostać przekonwertowany na łańcuch


Poprosiłem Google o pomoc, ale nie miałem szczęścia. :-(
Oto konkretny kod, który generuje błąd:
$this->conn->query("UPDATE tz_members SET confirm='yes' WHERE usr='".$uname."'");

Cała funkcja wygląda następująco:
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."'");
}

Wybacz mi, jeśli przegapiłem coś głupiego. Czy ktoś może mi powiedzieć jaka jest przyczyna tego problemu ???
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Problem polega na tym, że $ uname jest obiektem, a nie łańcuchem. Musisz wywołać jedną z metod $ uname, aby uzyskać dostęp do danych.
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"]."'"); }}

powinno to wystarczyć (lub jedno z powyższych rozwiązań).
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


$uname

pierwsze zapytanie zwraca obiekt mysql_result, a nie ciąg.
musisz wyodrębnić dane z tego wyniku, aby użyć go w drugim zapytaniu.
while ($row = mysql_fetch_assoc($result)) {
echo $row["usr"];
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Metoda
query
zwraca wskaźnik/obiekt wyniku zapytania, zamiast po prostu bezpośrednio zrzucać odpowiedź. Musisz zrobić coś takiego jak
list ($ uname) = $ uname- & > fetch_row;
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

$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);

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się