Зачем вставлять запрос вставки 2 строки, пока он выполняется только один раз в php? - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь вставить некоторые записи о посещаемости в БД со страницы PHP, и в это время во время выполнения INSERT-запрос вставляет данные в мою базу данных дважды, и я не могу понять причину.

Вот мой код:

<?php
    error_reporting(E_ALL & ~E_NOTICE);
    session_start();
    $con = mysqli_connect('localhost','root','');
    mysqli_select_db($con,'att_management');
    if ($con) 
    {
        $sql = "SELECT * FROM temp;";
        if ($res = mysqli_query($con,$sql)) 
        {
            $rows = mysqli_num_rows($res);
            if ($rows>0) 
            {
                $att=array();
                $fid=array();
                $sid=array();
                $i=0;
                while($row=mysqli_fetch_assoc($res))
                {
                        $att[$i]=$row['Attendance'];
                        $sid[$i]=$row['SID'];
                        $fid[$i]=$row['SFID'];
                        echo $att[$i];
                        echo "<br>";
                        echo $fid[$i];
                        echo "<br>";
                        echo $sid[$i];
                        echo "<br>";
                        $i=$i+1;
                }
                for ($i=0; $i < $rows; $i++) 
                { 
                        $sql="INSERT INTO satmstr SET SID=(SELECT SID FROM stdinfo WHERE SID=$sid[$i]),SFID=$fid[$i],Attendance='$att[$i];'";
                        if ($res=mysqli_query($con,$sql)) 
                        {
                            echo "DONE xD<br>";
                        }
                        else
                        {
                            echo "ERR:: MAIN RES ERR"."<br>";
                        }
                }
            }   
            else
            {
                echo "ERR:: EMPTY_TABLE";
            }
        }
        else
        {
            echo "ERR: RES_ERR";
        }

    }
    else 
    {
        echo "Connection Err";
    }

 ?>

В базе данных есть три таблицы stdinfo, в ней есть столбцы SID и SFID, Другая таблица - это temp, которая предназначена для временного посещения, и есть 3 столбца для SID, SFID и Attendance (время присутствия). Другая таблица - это satmstr, в которую я хочу вставить из temp. У satmstr есть все те же столбцы, что и у таблицы temp.

OUTPUT:

DONE xD

DONE xD

DONE xD

и в БАЗЕ ДАННЫХ сначала вставляются две записи из temp, а затем снова вставляются две записи:

SID      | SFID       |Attendance

1        | 1        |2020-04-15 16:49:34     

2        | 2        |2020-04-15 16:51:03 

1        | 1     |2020-04-15 16:49:34 

2        | 2     |2020-04-15 16:51:03 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...