簡體   English   中英

如何在PHP MySQL的while循環內運行嵌套語句?

[英]How to run nested statement inside while loop in PHP MySQL?

我在while循環內創建if語句。

我在表中有三行數據,如下所示

row 1 : **timeout 0830 , timein 1030** 

row 2 : **timeout 1230 , timein 1300**

row 3 : **timeout 1400 , timein 1730**

問題是,輸出像這樣顯示

Time added ! Duplicate Time added

並且數據仍添加在第一行和第三行中。 我不知道為什么

我要顯示的錯誤是,如果其中任一行重復而未添加數據。

假設我輸入第二行的數據是1230和1300。我希望輸出顯示為:

重復

並且第一行和第二行不會添加任何數據,因為其中一行是重復的。

有什么辦法嗎?

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

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

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

        $sql       = "SELECT * FROM table WHERE user_id='$user_id'";
        $get       = mysqli_query($connect, $sql);
        if($get && mysqli_num_rows($get) > 0 ){
            while($run2 = mysqli_fetch_assoc($get)){
                $timeout_new    = $run2['timeout'];
                $timein_new     = $run2['timein'];  
                if(($timeout >= $timeout_new) && ($timein <= $timein_new)){
                    echo "Duplicate !";
                }
                else{
                    $add         = "INSERT INTO table (timeout,        timein)
                                               VALUES ('$timeout',     '$timein')";
                    $addDateTime = mysqli_query($connect,$add);
                    echo "Time added !";
                }
            }
            mysqli_free_result($get);
        }
    }
?>
<form action="dd.php" method="post">    
    <table>
        <tr>
            <td><i class="fa fa-unlock-alt"></i> </td>
            <td>User ID : </td>
            <td><input type ="text" name="user_id" size="30"></td>
        </tr>   
        <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>

嘗試做timeout timein在數據庫級別,而不是PHP比較。

將您的代碼更改為類似的代碼,以查看其是否有效:

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

    if (isset($_POST['Submit'])) {    
        $user_id        = $_POST['user_id'];
        $timeout        = $_POST['timeout'];        
        $timein         = $_POST['timein'];

        $sql       = "SELECT * FROM table WHERE user_id='{$user_id}' AND timeout >= {$timeout} AND timein <= {$timein}";
        $get       = mysqli_query($connect, $sql);
        if($get && mysqli_num_rows($get) > 0 ){
            echo "Duplicate !";
        } else {
            $add         = "INSERT INTO table (timeout, timein)
                            VALUES ('{$timeout}', '{$timein}')";
            $addDateTime = mysqli_query($connect, $add);
            echo "Time added !";
        }
        mysqli_free_result($get);
    }
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM