gpt4 book ai didi

php - 根据 MySQL 中的时间选择轮类人员的问题

转载 作者:行者123 更新时间:2023-11-29 02:30:21 25 4
gpt4 key购买 nike

免责声明:仍然是初学者。

我正在制作一个小脚本来显示目前谁应该轮类,按角色过滤。这些轮类会持续到午夜。截至目前,时间和角色是硬编码的,但我打算允许用户稍后指定两者(因此我不使用 NOW() 等)。

所以给定下面的数据,假设是星期一下午 4:30,我想知道什么水果是按计划的,当这个脚本被执行时,它会回显如下:

Apple
Banana

但是,当下面的代码在下面的表格上执行时,它几乎总是选择整个表格。我确定查询本身存在问题,但为了彻底考虑,我将其余部分包括在内。我已经测试过只选择日期和角色本身并且它工作正常,但是它选择时间的方式错误地评估为真。如果有任何建议,我将不胜感激。

这是我的表格的一个例子:

+----------+-------------+----------+----------+-------------+
| Name | Days | Start | End | Role |
+----------+-------------+----------+----------+-------------+
| Apple | Sun,Mon,Tue | 15:30:00 | 20:00:00 | Fruit |
| Banana | Mon,Tue,Wed | 16:00:00 | 20:30:00 | Fruit |
| Cheese | Mon,Tue,Wed | 08:30:00 | 10:30:00 | Dairy |
| Carrot | Fri,Sat,Sun | 22:00:00 | 07:00:00 | Vegetable |
+----------+-------------+----------+----------+-------------+

这是我的代码,没有遗漏:

<?php
date_default_timezone_set('Etc/GMT+6'); // Set default time zone
$time = date("H:i:s"); // Time with seconds in a 24-hour, leading zero format: i.e. 07:00:00 or 15:30:00
$today = date("D"); // Today, in a three-letter format: i.e. Mon, Tue
$role = "Fruit";

$username="example-username";
$password="example-password";
$database="example-database";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT *
FROM work
WHERE `days` LIKE '%$today%' AND
`role` LIKE '%$role%' AND
(start > end AND ('$time' < end OR '$time' > start)) OR
('$time' BETWEEN start AND end)";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();

$i=0;
while ($i < $num) {

$victim=mysql_result($result,$i,"name");

echo "<li>$victim</li>";

$i++;
}
?>

最佳答案

您的括号是错误的,您的查询末尾有 OR ('$time' BETWEEN start AND end),因此满足此条件的行将忽略 role 和 days 子句。你想要一对额外的

((start > end AND ('$time' < end OR '$time' > start)) OR
('$time' BETWEEN start AND end))

总的来说,在数据库中使用逗号分隔值有悖于关系数据库的原则。如果每一行都有单独的行,事情通常会更好。

关于php - 根据 MySQL 中的时间选择轮类人员的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14176851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com