duanhao7786 2018-12-12 16:03
浏览 141

将数组数据保存到数据库中,不重复

Showing data correctly into array.
Now want to push into database(phpmyadmin>attendance). any idea how to push data into database without duplicating.(ignore duplicate entry into database.

code

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

Result

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

Database Column

id | Name | Time

Php

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

1条回答 默认 最新

  • dongqiao9394 2018-12-13 05:53
    关注

    MySql understands SQL query only and MySql does not support direct insertion of php arrays So convert php array into MySql sql statement but one row can insert at a time.

    In this code, your $output_array may be

    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
            )
    
    )
    

    It has sub array values. Duplicate checking process can implement only by writing manual coding and not use "in_array()" because "in_array() " does not check duplicate values in sub array.

    Try this code..

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

    This example checks "name" has duplicate values and insert "check in" time value to Time field value

    评论

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测