【问题标题】:PHP Prepared Statement Foreach LoopPHP 准备语句 Foreach 循环
【发布时间】:2011-11-24 01:00:05
【问题描述】:

下面的代码只返回一个结果。其余五个结果为空白。如何返回所有行?

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 查询中似乎缺少一个 "
  • 您应该将prepare 语句移到foreach 循环之前。
  • 虽然这听起来很愚蠢,但您是否检查过 $dates 数组中有超过 1 个项目,如果是这样,其他 4 个项目实际上匹配一个条目? (检查 $stmt->fetch() 的大小)
  • 数组有五个元素,它们确实匹配。我是否使用准备好的语句以正确的方式执行此操作?
  • @Mr.Jones:不要编辑您的问题以反映答案。当人们在未来阅读这篇文章时,它就不再有意义了。

标签: php mysql prepared-statement


【解决方案1】:

您在第一次执行 foreach 循环时关闭了准备好的语句。

将您的 $stmt->prepare("SELECT event FROM calendar WHERE date = ?") 移出 foreach 循环并

$stmt->close() 在 foreach 循环之外

【讨论】:

    猜你喜欢
    • 2014-11-14
    • 1970-01-01
    • 2014-06-29
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多