首页 > 解决方案 > MySQL 行计数查询按预期工作 localhost/Xampp 但不在托管服务器上

问题描述

我运行以下查询来检查学生是否已经预订了一个活动,以通过以下带有 PDO 和 HTML 的 SQL禁用“立即预订”按钮来阻止他们重新预订:

// Existing Booking check to disable Booking button if required:
$bookingcount=0;
$countsql = "SELECT Count(BookingId) FROM tblBookings WHERE tblBookings.UserId=? AND tblBookings.EventId=?";
$countquery = $dbh -> prepare($countsql);
$countquery->execute([$userid,$eid]);
$bookingcount = intval($countquery->fetchColumn());

<button type="button" <?php echo $bookingcount > 0 ? 'disabled="true"' : ''; ?> class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Book Now</button></div>

我在本地主机和服务器上都使用了 Userid 和 EventID 的回显,它们总是显示正确的值。

在 localhost 上,如果存在现有预订,则 $bookingcount 回显为 1,否则为 0,因此在需要时禁用该按钮。

在托管服务器上,即使存在现有预订,它也始终返回零。从会话变量中检索 Userid 并传入 eid。两者始终通过 echo 在 localhost 或服务器环境中显示为正确值。

我在查询中添加了表名作为前缀,因为此处提到的另一个类似问题已通过前缀修复,但在这种情况下不是。

没有其他查询给我带来问题,这是唯一使用的 Select Count(*) - 是否存在用于计算不同环境导致此类错误的行的特殊情况?

我知道当我通过 PDO 对选择计数进行编码时,我不得不对其进行研究,因为有很多人对应该如何完成提出了相互矛盾的评论......

任何指针都非常感谢

谢谢马丁

标签: phpmysqlpdo

解决方案


推荐阅读