Сохранить массив данных в базу данных без дубликатов - PullRequest
0 голосов
/ 12 декабря 2018

Правильно отображать данные в массиве.
Теперь нужно отправить в базу данных (phpmyadmin> посещаемость).любая идея, как поместить данные в базу данных без дублирования.

-----------------------------
| Name   | TimeIn | TimeOut |
-----------------------------
| John   | 2:00   | 5:00    |
| Kings  | 1:00   | 3:00    |
-----------------------------

Столбец базы данных

id | Name | Time

Php

$datapush = json_encode($output_array);
$sql = "INSERT INTO attendance (id, name, time) VALUES ('$datapush')";

1 Ответ

0 голосов
/ 13 декабря 2018

MySql понимает только SQL-запрос, а MySql не поддерживает прямую вставку массивов php. Поэтому преобразуйте массив php в оператор MySql sql, но одновременно можно вставлять одну строку.

В этом коде ваш $ output_array может быть

Array
(
    [101] => Array
        (
            [name] => John
            [Check In] => 2.00
            [checkout] => 5.00
        )

    [102] => Array
        (
            [name] => Kings
            [Check In] => 1.00
            [checkout] => 3.00
        )

    [103] => Array
        (
            [name] => Manick
            [Check In] => 3.30
            [checkout] => 4.40
        )

    [104] => Array
        (
            [name] => John
            [Check In] => 1.50
            [checkout] => 3.30
        )

)

Он имеет значения подмассива.Процесс проверки дубликатов может быть реализован только путем написания ручного кода и не использовать "in_array ()", потому что "in_array ()" не проверяет повторяющиеся значения в подмассиве.

Попробуйте этот код ..

$temp_array = [];

foreach($output_array as $uid => $data)
{
    echo
    '
        <tr>
            <td>'.$uid.'</td>
            <td>'.(isset($data["name"]) && !empty($data["name"]) ? $data["name"] : "N/A").'</td>

            <td>'.(isset($data['Check In']) && !empty($data['Check In']) ? $data['Check In'] : "N/A").'</td>
            <td>'.(isset($data["checkout"]) && !empty($data["checkout"]) ? $data["checkout"] : "N/A").'</td>
        </tr>
    ';

    if (!check_duplicate($data['name'], $temp_array))
    {
        $array_push = ['id' => $uid, 'name' => $data['name'], 'Time' => $data['Check In']];
        $sql = "INSERT INTO attendance (id, name, time) VALUES ('".implode("','",$array_push)."')";    

        // Execute Sql Query
        mysql_query($sql);

        // Store Array values in Temporary Array for checking duplicates
        array_push($temp_array, $array_push);
    }

}

function check_duplicate($key, $arr)
{
    foreach($arr as $arr_1)
    {
        if(in_array($key, $arr_1))
            return TRUE;
    }

    return FALSE;
} 

В этом примере проверяется, что у «имени» есть повторяющиеся значения, и вставляется значение времени «проверки» в значение поля «Время»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...