mysqli_result类的对象无法转换为字符串

时间:2010-05-12 19:53:33

标签: php mysql

我请谷歌帮助我,我没有运气。 :-( 以下是生成错误的特定代码:

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

如果我错过了一些愚蠢的话,请原谅我。任何人都可以告诉我是什么导致了问题吗???

4 个答案:

答案 0 :(得分: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"]."'");

    }

}

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

答案 1 :(得分:1)

第一个查询返回的

$ uname 是一个mysql_result对象,而不是字符串。  您必须从该结果中获取数据才能在第二个查询中使用它。

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

答案 2 :(得分:0)

query方法返回查询结果的指针/对象,它不只是直接转储响应。您需要执行list($uname) = $uname->fetch_row;

之类的操作

答案 3 :(得分: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);