【问题标题】:How to check each rows in PHP MySQL ?如何检查 PHP MySQL 中的每一行?
【发布时间】:2017-03-25 14:59:40
【问题描述】:

我有三行数据mysql数据库并创建列 timeouttimein 。它是 VARCHAR 类型

第 1 行:

超时:0830,超时:1030

第 2 行:

超时:1230,超时:1730

第 3 行:

超时:1800,时间:1900

我希望代码在显示错误“重复”或将数据添加到数据库表之前检查数据库中的每一行

但问题是,它只读取查询中的第一行。第二行第三行不行

<?php
    $connect      = mysqli_connect("localhost", "root", "", "database");
    global $connect;   

    if(isset($_POST['Submit'])){    

        $timeout        = $_POST['timeout'];        
        $timein         = $_POST['timein'];

        $sql       = "SELECT * FROM table";
        $get       = mysqli_query($connect, $sql);  
        $run       = mysqli_fetch_array($get);

            $timeout_new    = $run['timeout'];
            $timein_new     = $run['timein'];   

                if(($timeout >= $timeout_new) && ($timeout <= $timein_new))
                {
                    echo "Duplicate !";
                }
                else
                {
                    $add         = "INSERT INTO movement (timeout,      timein)
                                               VALUES    ('$timeout',   '$timein')";
                    $addDateTime = mysqli_query($connect,$add);
                    echo "Time added !";
                }       
    }
?>
<form action="dd.php" method="post">    
    <table> 
        <tr>
            <td><i class="fa fa-unlock-alt"></i> </td>
            <td>Time out : </td>
            <td><input type ="text" name="timeout" size="30"></td>
        </tr>
        <tr>
            <td><i class="fa fa-unlock-alt"></i> </td>
            <td>Time in : </td>
            <td><input type ="text" name="timein" size="30"></td>
        </tr>
    </table>    

    <p><input class="btnSuccess" type ="submit" name="Submit" value="Submit"> </p>              
</form>

谢谢。

【问题讨论】:

  • 您需要使用foreach() 循环浏览数据库中的结果,因为它会检查它们是否存在于结果数组中。
  • 你能告诉我怎么做吗?

标签: php mysql


【解决方案1】:

我认为这条线是错误的,不是吗?

if(($timeout >= $timeout_new) && ($timeout <= $timein_new))

不应该

if(($timeout >= $timeout_new) && ($timein <= $timein_new))

【讨论】:

    【解决方案2】:

    你可以做有问题的控制

    if(isset($_POST['Submit'])){    
    
    $timeout        = $_POST['timeout'];        
    $timein         = $_POST['timein'];
    
    $sql       = "SELECT * FROM table WHERE timeout >= '{$_POST['timeout']}' AND timeout <= '{$_POST['timein']}'";
    $get       = mysqli_query($connect, $sql);  
    
    
    if(mysql_num_rows($get))
    {
        echo "Duplicate !";
    }
    else
    {
        $add         = "INSERT INTO movement (timeout,      timein)
                                   VALUES    ('$timeout',   '$timein')";
        $addDateTime = mysqli_query($connect,$add);
        echo "Time added !";
    }       
    }
    

    【讨论】:

      【解决方案3】:
      foreach( $run as $row )
      {
        $timeout_new  = $row[ 'timeout' ];
        $timein_new   = $row[ 'timein' ];   
      
        if( ( $timeout >= $timeout_new ) && ( $timein <= $timein_new ) )
        {
          echo "Duplicate !";
        }
        else
        {
          $add = "INSERT INTO movement (timeout, timein) VALUES ('$timeout', '$timein')";
          $addDateTime = mysqli_query($connect,$add);
          echo "Time added !";
        }
      }
      

      这没有经过测试,所以我不能肯定它会在第一次工作,但它会让你知道你需要看什么。您目前只查看第一个结果。您需要遍历结果并检查它们。

      【讨论】:

      • 怎么选?
      • 怎么选?
      • 我不知道如何添加 for 循环。我试图添加 foreach 循环。原来是在数据库中添加多个数据
      • 如果您在使用循环时遇到问题,那么您需要做一些研究 - tutorialspoint.com/php/php_loop_types.htm
      猜你喜欢
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 2013-04-10
      • 2017-10-30
      相关资源
      最近更新 更多