PHP准备语句foreach循环

6
下面的代码只返回一个结果。其余五个结果为空白。如何返回所有行?
foreach($dates as $date){

    if($stmt->prepare("SELECT event FROM calendar WHERE date = ?")) {

        $stmt->bind_param('i',$date);

        $stmt->execute();

        $stmt->bind_result($event);

        $stmt->store_result();

        while($stmt->fetch()) {
            echo $event;
        }
        $stmt->close();
    }
}

您的 SQL 查询似乎缺少一个引号。 - Marc Towler
10
你应该把 prepare 语句放在 foreach 循环之前。 - Toto
虽然听起来很蠢,但你是否检查过$dates数组中是否有多个项目,如果是这样的话,其他4个项目是否与条目匹配?(检查$stmt->fetch()的大小) - Marc Towler
这个数组有五个元素且它们是匹配的。我使用预处理语句的方式正确吗? - Mr. Jones
那不是你在问题中所说的(1个有效结果,5个空白)。循环迭代多少次? - symcbean
6
@Jones 先生:请不要编辑您的问题以反映答案。将来读到这篇文章的人会感到困惑。 - gen_Eric
1个回答

7

在第一次执行foreach循环时,您关闭了预处理语句。

$stmt->prepare("SELECT event FROM calendar WHERE date = ?")移至foreach循环之外,并将

$stmt->close()移至foreach循环之外。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接