【发布时间】:2016-12-25 00:53:24
【问题描述】:
我目前有 2 个单独的查询需要一起运行,但要单独执行,我想知道这样做的最佳做法是什么。
我有一个查询,每次在管理页面中添加餐厅时都会动态打印出餐厅,并且我有一个查询可以确定餐厅是营业还是关闭。我认为通过执行 2 个单独的查询然后将打开时间回显保存到一个变量中并将这个变量放入循环中,这将很简单,但是,这似乎不起作用。通过不工作,我的意思是调用了错误的 id,因为打开的 hrs 查询是在动态打印输出查询之前,而当它在查询工作计划之后,但是我的回显/打印输出变量不起作用。我很震惊,不知道如何前进。
打开人力资源查询
$query = mysqli_query($dbc, "SELECT * FROM Opening_hrs
WHERE Restaurant_ID='$rest_id' AND Day_of_week = DATE_FORMAT(NOW(), '%w')
AND CURTIME() BETWEEN Open_time AND Closing_time");
$run_qu = $dbc->query($query);
if($run_qu->num_rows>0){
while($row_qu=$run_qu->fetch_assoc()){
$message= "open" .$row_qu["Open_time"]."</br>";
}
} else {
$message=$message. "close".$row_qu["Closing_time"]."</br>";
}
动态查询
$sql = mysqli_query($dbc, "SELECT Rest_Details.Resturant_ID, Rest_Details.Resturant_name,,Delivery_Pcode.Pcode
FROM Rest_Details INNER JOIN Delivery_Pcode
ON Delivery_Pcode.Restaurant_ID=Rest_Details.Resturant_ID
WHERE Delivery_Pcode.Pcode LIKE '%" . $pcode . "%'") or die("could not search!");
echo var_dump($sql);
$count = mysqli_num_rows($sql);
if ($count === 0) {
$output = '<b>we dont deliver to ' . $pcode . '</b></br>';
} else {
$i = 1;
}
while ($row_prods = mysqli_fetch_array($sql)) {
$rest_id = $row_prods['Resturant_ID'];
$rest_name = $row_prods['Resturant_name'];
$output = $output . '<div id="products">' .
' <p id="rest_name">' . $rest_name . '</p>' .
'<p> '.$message.' </p>' .;
$i++;
}
}
【问题讨论】:
-
您可以只在动态查询中
LEFT JOINOpening_hrs 并返回所有其他餐厅信息的营业时间。 -
您的代码有几个问题。在
Opening hr query中,当$row_qu未设置时,您将在else子句中访问$row_qu["Closing_time"]。动态查询最后多了一个}。 -
我不明白这些应该如何协同工作。营业时间查询仅针对单个餐厅,而动态查询针对所有餐厅。为什么要将同一餐厅的营业时间放在所有餐厅的结果中?
-
由于您使用的是
mysqli,因此您应该使用准备好的查询,而不是直接将变量替换到查询中。 -
@Barmar 也许我没有正确解释。我很抱歉,开放时间查询是为了显示每家餐厅的营业时间和关闭时间,这就是我希望它在循环中的原因。所以循环输出餐厅名称、id 和营业时间