2010-05-12 44 views
4

我要求Google帮助我,我没有运气。 :-( 下面是产生错误的特定代码:class mysqli_result的对象无法转换为字符串

$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."'"); 
} 

原谅我,如果我错过了一些愚蠢的事谁能告诉我是什么引起的问题请???

+0

如果您希望人们全力以赴,您还应该开始回答更多问题。 – 2010-05-12 19:57:48

回答

6

的问题是,$ 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"]."'"); 

    } 

} 

应该这样做(或上述解决方案之一)。

+0

编辑:^假设你的代码不会中断,如果在第一个查询的结果中返回多个行。在某个时候调用$ uname-> num_rows()可能不是一个坏主意。更好的是,修改MySQL表,创建一个新的bool列而不是设置confirm ='yes',然后使确认列唯一。 – wash 2010-05-12 20:11:25

1

$ UNAME通过你的第一个查询返回的是一个mysql_result对象,而不是一个字符串。 你必须为了使用它,我取从结果的数据你的第二个查询。

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

query该方法返回查询结果的指针/对象,它不只是直接倾倒的响应。你需要做的是这样list($uname) = $uname->fetch_row;

0
$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); 
相关问题