我有一个select语句,它从数据库中抓取一个完整的表。
if ($select = $db -> prepare("SELECT service_id, service_name, service_cost FROM services"))
{
$select -> execute();
$select -> bind_result($service_id, $service_name, $service_cost);
$select -> fetch();
$select -> close();
}
(我知道在此示例中我可以使用query
代替prepare
。)
输出
service_id | service_name | service_cost
1 Artwork 80.00
2 Printing 60.00
3 Binding 20.00
4 Finishing 30.00
所以现在我拥有了来自服务表的所有数据,我希望能够在某些地方回应某些事情。让我们说我想要回复ID为2的服务,这是在我的页面上打印的地方,也许是在我的页面下面打印的成本。有没有办法做到这一点,而不必用WHERE id=?
写两个新的语句只是为了得到这些?
类似于echo $service_name(2)
,其中2是ID?
是否存在与此相似的内容?
完成我想要做的事情的最佳做法是什么?
答案 0 :(得分:1)
解决方案就是:
if ($select = $db -> prepare("SELECT service_id, service_name, service_cost FROM services"))
{
$select -> execute();
$select -> bind_result($service_id, $service_name, $service_cost);
$select -> fetch();
while ($stmt->fetch()) {
if($service_id==2)
{
printf("%s %s\n", $service_name, $service_cost);
}
}
$select -> close();
}
但也许你想这样做(假设id是唯一的):
function print_query_variable($id, $variable_name)
{
if ($select = $db -> prepare("SELECT service_id, service_name, service_cost FROM services WHERE service_id=$id"))
{
$select->execute();
$select->bind_result($service_id, $service_name, $service_cost);
$select->fetch();
$select->fetch();
$select->close();
return $$variable_name;
}
}
答案 1 :(得分:0)
您可以将数据转换为您想要的行为:
$services = array();
foreach ($result as $r) {
$services[$r['service_id']] = $r;
}
现在您可以通过ID获取信息:
$id = 2;
echo $services[$id]['service_name'];