donglusou3335 2016-06-17 10:57
浏览 52
已采纳

PHP:将多个数组插入mysql表

I am testing multiple array insertion into my table, I have try all what I could but I am not getting.Here is my code:

<?php

    ini_set('display_errors',1);
    //ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);

                    $mysqli = new mysqli(HOST,USER,PASS,DB);
                     $message = array();    

                    $id =1;
                    $SocialHandle = "Facebook,Twitter,LinkIn";
                    $SociaUrl ="Url1,Url2,Url3";

                    $strSocialHandle = explode(',', $SocialHandle); 
                    $strSociaUrl = explode(',', $SociaUrl); 
                    print_r($strSocialHandle);
                    print_r($strSociaUrl);
                    $sql = "INSERT INTO `social_table`(`id`, `social_handle`, `handle_url`) VALUES";
                    foreach($strSocialHandle as $SocialNameValue){                                      
                    $sql .= "({$id}, '{$SocialNameValue}','{$strSociaUrl}'),";              
                    }
                    $sql = rtrim($sql, ',');
                    $result = $mysqli->query($sql);

                    if (!$result){
                            $message = array('Message' => 'insert fail or record exist');
                            echo json_encode($message);         
                    }else{             
                            $message = array('Message' => 'new record inserted');
                            echo json_encode($message);   
                    }
?>

Here is my goal achievement:

ID         social handle         handle url
1           Facebook         url1
1           Twitter             url2
1           LinkIn             url3

Please help.

  • 写回答

2条回答 默认 最新

  • dongpiansui8755 2016-06-17 11:09
    关注

    You can use for loop for it as

    $id =1;
    $SocialHandle = "Facebook,Twitter,LinkIn";
    $SocialHandle = explode(",", $SocialHandle);
    $SociaUrl = "Url1,Url2,Url3";
    $SociaUrl = explode(",", $SociaUrl);
    
    $sql = "INSERT INTO `social_table`(`id`, `social_handle`, `handle_url`) VALUES";
    for ($i = 0; $i < count($SocialHandle); $i++) {
        $sql .= "({$id}, '$SocialHandle[$i]','$SociaUrl[$i]'),";
    }
    
    
    $sql = rtrim($sql, ',');
    echo $sql;
    $result = $mysqli->query($sql);
    

    OUTPUT

    INSERT INTO social_table(id, social_handle, handle_url) VALUES(1, 'Facebook','Url1'),(1, 'Twitter','Url2'),(1, 'LinkIn','Url3')

    DEMO

    UPDATED

    Better use prepare and bind statement to prevent form sql injection as

    for ($i = 0; $i < count($SocialHandle); $i++) {
        $sql = "INSERT INTO `social_table`(`id`, `social_handle`, `handle_url`) VALUES (?,?,?)";
        $stmt = $mysqli->prepare($sql);
        $stmt->bind_param('iss', $id, $SocialHandle[$i], $SociaUrl[$i]);
        $stmt->execute();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示