php - 检索数据库记录以在 PHP 代码中使用

标签 php mysql sql wampserver

我正在为工作室预订编写代码,客户可以在其中预订一天中的几个小时...例如,客户输入 日期:2011 年 10 月 17 日 时间:上午 10:30:00 超时时间:上午11:30:00

在这种情况下,其他客户不得在同一日期的上午 10:30 到 11:30 之间输入时间/超时。

在制作数据库之前,我试过这段代码:

<?php 
$resttimefrom='10:00:00 am';
$resttimeto='11:00:00 am';
$reserve='11:01:00 pm';
$datedat='2012-10-14';


$st_time    =   strtotime($resttimefrom);
$end_time   =   strtotime($resttimeto);
$reserve   =   strtotime($reserve);
$datedat   =   strtotime($datedat);

print $st_time; echo "<br>";
print $end_time; echo "<br>";
print $reserve; echo "<br>";

if ($reserve => $st_time and $reserve =< $end_time)
{
echo "sorry, not available";
}
else
{
echo "ok!";
}

?>

它已经可以限制时间,但还不能限制日期。

这只是一个示例,如果我将其传输到数据库中,我将知道该怎么做。

我的问题是:

我有一个名为 reserve 的表,其中包含 3 列...timein、timeout、dateres 输入了3条记录,

2011 年 10 月 15 日,10:30-11:30 2011年10月15日1:00-2:30 2011年10月15日,5:30-8:30

如何检索这些记录以在上面的代码中使用它们?而不是这些:

$resttimefrom='10:00:00 am';
    $resttimeto='11:00:00 am';
    $reserve='11:01:00 pm';
    $datedat='2012-10-14';

如何将上午 10:00:00 更改为数据库中的所有记录?

我对 php 和 mysql 的了解非常有限... :( 请有人帮助我。拜托拜托

最佳答案

我建议您重新考虑处理预订期限的方式。与其使用 date_reserved,不如简单地将 time_intime_out 作为 datetime。我还会使用 24 小时格式而不是 12 小时格式(使用 AM 和 PM)。所以你会:

$timeInStr  = '2012-10-14 10:00:00';
$timeOutStr = '2012-10-14 11:00:00';

为了完整起见,这里有一些将数据插入表中的代码:

$pdo = new PDO(
        "mysql:dbname=stack_overflow;host=127.0.0.1",
        $username,
        $password);

// prepare the insert statement
$statement = $pdo->prepare("
        INSERT INTO `reserve`(`time_in`, `time_out`)
        VALUES (:time_in, :time_out)");

// bind param values
$statement->bindParam(':time_in', $timeInStr, PDO::PARAM_STR);
$statement->bindParam(':time_out', $timeOutStr, PDO::PARAM_STR);

$statement->execute();

为了确定预订请求是否会与先前设置的预订冲突,请查询数据库预订请求(相当于您的$reserve 变量)是否在time_in & time_out 任何预订。

在这种情况下,我会计算有多少先前的预订与请求的预订时间重叠。

$statement = $pdo->prepare("
    SELECT COUNT(`id`)
    FROM `reserve`
    WHERE :reserve_request_time BETWEEN `time_in`
    AND `time_out`");

$statement->bindParam(
        ':reserve_request_time',
        '2012-10-14 10:30:00',
        PDO::PARAM_STR);

$statement->execute();
$result = $statement->fetch();

// if an overlapping reservation was found "sorry, not available"
if (0 < (int) $result['COUNT(`id`)']) {
    echo "sorry, not available";
}
else {
    echo "ok!";
}

关于php - 检索数据库记录以在 PHP 代码中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12878908/

相关文章:

mysql - SQL 查询比较不同行中的数据

即使没有给出关键字,php mysql 查询也会获取数组

PHP代码点火器: remove element from a two-dimensional column from its id

sql - 如何在集成服务目录中启用创建目录选项?

SQL Server INSERT ... SELECT 语句无法解析

php - MySQL 到 JSON 结果为空的 Google 可视化图表

php - 写入多维数组的位置

MySQL搜索用户,将 friend 排在其他人之上

php - 用于视频播放的 Javascript 监听器 - 发送到数据库

php - 表连接混淆检索数据