mysqli fetch的问题

时间:2011-04-02 22:10:55

标签: mysqli

我有一个mysqli数据提取问题。我将尝试通过示例解释我的问题:

我想从表中获取条目(由不同的人)。现在我想在另一张桌子上查找每个获取的人的名字,看看他是否有任何照片。     我的代码如下所示,但是它不起作用,我遇到了以下错误:

mysqli::prepare() [mysqli.prepare]: All data must be fetched before a new statement prepare takes place
    Call to a member function fetch() on a non-object in ...

我的代码:

if ($stmt = $this->mysqli->prepare("SELECT entry, author, time FROM messages WHERE user = ?")) {
            $stmt->bind_param("s", $user_name);
            $stmt->execute();
            $stmt->bind_result($entry, $author, $time);

        while ($stmt->fetch()) {             
                 if ($stmt = $this->mysqli->prepare("SELECT photo_id FROM photos WHERE user = ?")) {
                     $stmt->bind_param("s", $author);
                     $stmt->execute();   
                     $stmt->bind_result($photo_id); 
                }
           //echo $photo_id; 
        }    
    $stmt->close();
    }

我会非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

将第二个语句分配给新变量,这样它就不会覆盖第一个变量并导致“必须获取所有数据..”错误。

if ($stmt = $this->mysqli->prepare("SELECT entry, author, time FROM messages WHERE user = ?")) {
        $stmt->bind_param("s", $user_name);
        $stmt->execute();
        $stmt->bind_result($entry, $author, $time);

        while ($stmt->fetch()) {             
            if ($st = $this->mysqli->prepare("SELECT photo_id FROM photos WHERE user = ?")) {
                $st->bind_param("s", $author);
                $st->execute();   
                $st->bind_result($photo_id); 
            }
            //echo $photo_id;
            $st->close();
        }    
    $stmt->close();
}