将阵列数据保存到数据库中,无需重复

时间:2018-12-12 16:03:16

标签: php phpmyadmin

将数据正确显示到数组中。
现在要推送到数据库(phpmyadmin>出勤)。 任何想法如何将数据推入数据库而不进行重复。(忽略重复输入数据库。

代码

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>
        ';
    }

结果

-----------------------------
| 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 :(得分:0)

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;
} 

此示例检查“名称”是否具有重复值,并将“签入”时间值插入“时间”字段值