我正在建立一个允许人们预订活动的网站。我希望能够在网站达到容量时自动从网站中删除该事件。
我有一个注册表,它存储了delegate_id和instance_id,所以我可以看到谁预订了什么地方。 instance_id链接到实例表,实例表存储事件信息 - 地点,日期和容量。
现在,似乎我应该能够获得为给定实例注册的委托数量,并将其与该实例的容量进行比较,然后使用这些数字让网站显示事件或不。所以我有这些疑问:
//Delegates Query
$qRegs = "SELECT COUNT(delegate_id) FROM registration
WHERE registration.instance_id = $instance_id";
$rRegs = mysqli_query($dbc,$qRegs);
$registrations = mysqli_fetch_object($rRegs);
//Capacity Query
$qCap = "SELECT instance_cap FROM instance
WHERE instance_id = $instance_id";
$rCap = mysqli_query($dbc,$qCap);
$capacity = mysqli_fetch_object($rCap);
因此我可以简单地计算可用性:
$availability = $capacity - $registrations;
但是,这会引发错误:注意:类stdClass的对象无法转换为int 。我尝试使用(int)
对变量进行类型转换,但没有区别。
有什么想法吗?
答案 0 :(得分:5)
您的两个对象实际上并不包含单个字段。它们是包含字段名称的对象,其中包含查询中的内容。
您需要为第一个select语句指定COUNT
操作的名称。例如,假设您在查询中将其称为注册。
$availability = $capacity->instance_cap - $registrations->registrations;
有关更多说明,您可能需要阅读mysqli_fetch_object located here上的文档。
答案 1 :(得分:2)
你正在归还物品。
所以这些将StdClasses
使用下面的
$qCap = "SELECT instance_cap FROM instance
WHERE instance_id = $instance_id";
$rCap = mysqli_query($dbc,$qCap);
$row = mysqli_fetch_object($rCap);
$capacity= $row->instance_cap;
您可以为两个查询执行此操作
答案 2 :(得分:1)
$capacity = mysqli_fetch_object($rCap);
获取一个对象。您需要获取要使用的任何列:
$rCap = mysqli_query($dbc,$qCap);
$capacity = mysqli_fetch_object($rCap);
print_r($capacity->instance_cap);
答案 3 :(得分:1)
您要求将记录作为对象返回,因此您必须将它们作为对象引用。我强烈建议你为了清晰而投射你的田地
//Delegates Query
$qRegs = "SELECT COUNT(delegate_id) AS count FROM registration
WHERE registration.instance_id = $instance_id";
$rRegs = mysqli_query($dbc,$qRegs);
$registrations = mysqli_fetch_object($rRegs);
//Capacity Query
$qCap = "SELECT instance_cap FROM instance
WHERE instance_id = $instance_id";
$rCap = mysqli_query($dbc,$qCap);
$capacity = mysqli_fetch_object($rCap);
$availability = $capacity->instance_cap - $registrations->count;