我无法使用 php mysql 查询中的时间函数找到该行是不是已存在于 mysql db 中?

Posted

技术标签:

【中文标题】我无法使用 php mysql 查询中的时间函数找到该行是不是已存在于 mysql db 中?【英文标题】:I am unable to find if the row already exists in mysql db using time function in php mysql query?我无法使用 php mysql 查询中的时间函数找到该行是否已存在于 mysql db 中? 【发布时间】:2019-07-08 23:54:23 【问题描述】:

我目前正在开发一个模块,教师可以通过选择一个下拉列表(选择框)向学生发布出勤率,该下拉列表由教师提供的信息动态生成。当教师选择特定年份和部门时,受尊敬的学生列表是检索并显示在表格中。但要求是,一旦出勤被发布到特定的特定班级/部分,教师就不能再次打开它

我尝试使用 mysql_num_rows() 函数来检查数据库中是否已经存在任何行,或者在该特定日期不存在。但它没有按照我想要的方式工作

这是我的模块的全部代码,不包括 db 文件

<form action="take.php" method="Post">
<br>
<table class="table table-bordered table-hover ">
    <tr>
        <th>S.no</th>
        <th>Student Name</th>
        <th>Roll Number</th>
        <th>Present</th>
        <th>Absent</th>
    </tr>
    <?php 
        if (isset($_POST['search'])) 
             
            $stu="Student";
            $yr=$_POST['year']; 
            $se=$_POST['section'];                             

            $subdr=mysql_query("SELECT subject FROM schedule WHERE id='$cuid' AND day='$d' AND class='$yr' AND section='$se'");
            $subj=mysql_fetch_assoc($subdr);
                $dis_date=date("Y-m-d H:i:s");
                $subj_d=$subj['subject'];
                $display=mysql_query("select * from attendance_records where id='$cuid' AND ondate='".$dis_date."' And subject='$subj_d'");
                $rec=mysql_num_rows($display);
                if($rec)
                echo "Records posted";
            
            else
                $display=mysql_query("select name,id from login where role='$stu' AND academic='$yr' AND section='$se'");

                $sno=0;
                $count=0;

                while ($row=mysql_fetch_array($display)) 
        $sno++;
        ?>
    <tr>
        <td><?php echo $sno  ?></td>
        <td>
            <?php echo $row['name']  ?>
            <input type="hidden" name="name[]" value="<?php echo $row['name']  ?>">
        </td>
        <td>
            <?php echo $row['id']  ?>
            <input type="hidden" name="id[]" value="<?php echo $row['id']  ?>">
        </td>
        <td>
            <input type="radio" name="attendance_status[<?php echo $count ?>]" value="Present" required>
        </td>
        <td>
            <input type="radio" name="attendance_status[<?php echo $count ?>]" value="Absent" required>
        </td>
    </tr>
    <?php 
        $count++;
        
        
        ?>
    <tr>
        <td colspan=5>
            <center><label><?php echo "Subject : ".$subj['subject']; ?></label></center>
        </td>
    </tr>
    <input type="hidden" name="yr" value="<?php echo $_POST['year']; ?>">
    <input type="hidden" name="set" value="<?php echo $_POST['section']; ?>">
    <?php 
         ?>
</table>
<center><input   type="submit" name="submit" value="Submit" class="btn btn-primary" >
</center>
</div>

预期的输出应该根据如下查询显示一条消息“已发布记录”:

$dis_date=date("Y-m-d H:i:s");
$subj_d=$subj['subject'];
$display=mysql_query("select * from attendance_records where id='$cuid' 
   AND ondate='".$dis_date."' And subject='$subj_d'");
$rec=mysql_num_rows($display);
if($rec)
 echo "Records posted";
 
 else
  #display the student list
 

【问题讨论】:

@MD.JubairMizan 兄弟你能帮帮我吗? mysql_XXX 函数已过时。它们已被弃用多年,并已从最新的 PHP 版本中完全删除。您应该使用mysqli_XXXPDO,并使用准备好的语句而不是将变量连接到 SQL 中。 现在我知道了 mysqli_XXX 函数的使用,我真的认为两者是相同的,并且可以使用不同的语法进行相同的工作,而且我们的先生并没有教我们所有这些东西,谢谢让我知道@Barmar 很遗憾,许多学校没有更新他们的课程。 @Barmar 可悲的现实却是真实的 【参考方案1】:

你的任务是:

$dis_date=date("Y-m-d H:i:s");

所以$dis_date 包含日期和时间。只有当表中的记录具有完全相同的时间而不是相同的日期时,查询才会匹配。

你应该把时间排除在变量之外:

$dis_date=date("Y-m-d");

如果表中列的数据类型是DATETIME,还需要从中过滤掉时间,用:

AND DATE(ondate)='$dis_date' And subject='$subj_d'"

如果数据类型是DATE,则不需要这样做。

【讨论】:

我一定会检查一下并在明天之前通知您 试过但没有影响,我的输出没有变化 您能否编辑问题并显示表格架构、示例内容和预期结果? 你能通过teamviewer联系我吗? 实际上是新的,我不知道如何通过文本键入 Db 模式,我的要求是数据是否在特定日期已经存在于表中,用户不应该能够在特定日期发布任何数据(应禁用提交按钮)

以上是关于我无法使用 php mysql 查询中的时间函数找到该行是不是已存在于 mysql db 中?的主要内容,如果未能解决你的问题,请参考以下文章

使用多个 php 函数查询单个(mysql)数据库的正确方法

MySQL LIKE函数中的%有啥用

使用 PHP 和 MySQL 构建 Google 图表

如何在 PHP 函数中正确使用 MySQL 查询? [关闭]

我无法使用 PHP 和 jQuery 将表单数据更新到 MySQL

php/mysql:在手机上找不到表