PHP中的变量类型

时间:2014-01-03 15:21:34

标签: php mysqli

我正在建立一个允许人们预订活动的网站。我希望能够在网站达到容量时自动从网站中删除该事件。

我有一个注册表,它存储了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)对变量进行类型转换,但没有区别。

有什么想法吗?

4 个答案:

答案 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;