我想检查行是否有任何事件绑定到具有host_id参数的主机,如果没有绑定到主机的任何事件,一切都很好,它打印出来没有,但是如果主机绑定到一个事件,它没有列出事件,但如果我删除我在下面指出的代码,注释问题从这里开始,问题在这里结束,它列出了事件。我正在使用上面的fetchAll函数用于另一件事,上面没有任何这样的错误,但是在下面的部分,它没有列出事件,我该如何解决?
由于
try
{
$eq = "SELECT * FROM `events` WHERE `host_id` = :id AND `confirmed` = '1' ";
$eq_check = $db->prepare($eq);
$eq_check->bindParam(':id', $id, PDO::PARAM_INT);
$eq_check->execute();
//problem starts here
$count3 = $eq_check->fetchAll();
$rowCount = count($count3);
if ($rowCount == 0)
{
echo "None";
}
//problem ends here
while($fetch = $eq_check->fetch (PDO::FETCH_ASSOC) )
{
$_loader = true;
$event_id = $fetch['event_id'];
$event_name = $fetch['event_name'];
$link = "https://www.mywebsite.com/e/$event_id";
echo "<a target=\"_blank\" href=\"$link\"><li>$event_name</li></a>";
}
}
catch(PDOException $e)
{
$log->logError($e." - ".basename(__FILE__));
}
谢谢
答案 0 :(得分:1)
如果不执行两次,则无法获取两次。如果您不想重复使用$count3
项,则可以再次触发closeCursor()
,然后再次execute()
再次获取该集。
要重复使用$count3
变量,请将while
循环更改为:foreach($count3 as $fetch) {
答案 1 :(得分:-1)
当你有代码时没有列出事件的原因是结果集已经使用你的fetchAll语句获取了(fetchAll
没有留下任何东西以后用{{1 }})。
在这种情况下,您可能最好运行fetch
来获取行数,然后实际运行完整查询以循环显示结果:
PDO中的一个例子是here:
select count(*)
请注意,您无法直接使用rowCount来获取所选行数 - 它是为了显示已删除的行数等。