使用语句选择所有内容,然后回显特定行

时间:2016-10-21 13:51:45

标签: php mysql

我有一个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?

是否存在与此相似的内容?

完成我想要做的事情的最佳做法是什么?

2 个答案:

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