Php 使用“select*from”在mysql数据库中选择和标识冲突保留

Php 使用“select*from”在mysql数据库中选择和标识冲突保留,php,mysql,Php,Mysql,所以我试着为一个游戏图书馆预订系统 $timestamp = (strtotime($StartDate)); $EndDate = strtotime("+$Duration days",$timestamp); 这部分代码将输入表单的日期转换为时间戳 代码的第二行计算结束日期时间戳,用于将游戏保留一定天数 在我看来,我应该怎样做是通过创建一个变量并从数据库中选择某些值。然而,我并不擅长php,因此我不能100%确定我是否正确: $reserved = mysql_query ("SELEC

所以我试着为一个游戏图书馆预订系统

$timestamp = (strtotime($StartDate));
$EndDate = strtotime("+$Duration days",$timestamp);
这部分代码将输入表单的日期转换为时间戳 代码的第二行计算结束日期时间戳,用于将游戏保留一定天数

在我看来,我应该怎样做是通过创建一个变量并从数据库中选择某些值。然而,我并不擅长php,因此我不能100%确定我是否正确:

$reserved = mysql_query ("SELECT count(*) FROM reservations WHERE EndDate <= $EndDate AND StartDate >= $timestamp");
if (!$reserved) { /*do nothing*/ } ELSE { echo "That date has already been reserved"; }

这应该做的是从数据库中选择发生冲突的时间戳,然后如果变量$reserved不是空的,我可以显示一条错误消息。然而,我不能让它工作。如何正确显示错误消息?

您应按如下方式使用:

    $result = mysql_query("Select * from reservations where StartDate >= '".$timestamp."' AND  EndDate <= '".$EndDate."'");
    $num_rows = mysql_num_rows($result);
    if($num_rows==0)
    { 
       //Your Process 
    } 
    else 
    { echo "That date has already been reserved"; }

在select或num_行中进行计数*,然后如果>0或==1显示消息,则显示其他内容。谷歌如果行存在mysql php。在不知道您正在使用哪个API连接的情况下,我能提供的最好结果。@Fred-ii-我正在使用mysql连接mysql\u connectservername、用户名、密码或mysql\u错误@M Bloxman:您是否使用了mysql_查询函数来执行查询?您的“示例代码”表明您不知道在PHP中使用mysql的基本知识–因此请阅读一些关于这方面的初学者教程。因此,这里不是教你基础知识的地方。还要注意的是,所有mysql函数在PHP5中都已弃用,并将在今年晚些时候发布的PHP7中删除。改用PDO或mysqli。您可以重新调整if语句的阶段,这样您就不会有do nothing子句,而且您还意外地注释掉了a}->if$num_行==0{echo该日期已被保留;}如果您只对查询返回的行数感兴趣,则不应返回所有行,而是让MySQL为您计数。非常感谢。我意识到我在代码中犯了一些愚蠢的错误。例如,我忘记了“mysql\u查询”部分。“$num_rows”函数我完全忘记了,所以感谢您对此的澄清。@M Bloxman:太好了,它帮助了您。。