PHP批量將數據插入MySQL數據庫

主頁 > 學習 > php >

次瀏覽

摘要:在本地模擬數據時,需要插入大量的數據并保存到數據庫。對每條數據單獨執行插入操作是保險的作法,但是存在一個效率低的問題。如果使用批量插入則可以節省相當多的時間。

在本地模擬數據時,需要插入大量的數據并保存到數據庫。對每條數據單獨執行插入操作是保險的作法,但是存在一個效率低的問題。如果使用批量插入則可以節省相當多的時間。下面分享一段用于指插入數據的代碼(以PHP+MySQL為例):

隨機新聞
急速赛车收
    /** 
     * 批量插入 
     *  
     * @param string $table 要插入的表名 
     * @param array $inserts 要插入的指數據,數據的key值最好為字段名。 
     * @return boolen 
     */  
    function multiInsert($table, $inserts)  
    {  
        //取出第一個要保存的數據的key值來拼field  
        $fields = "`".  implode("`,`", array_keys(current($inserts)))."`";    
          
        //拼接要保存的值  
        foreach($inserts as $insert)  
        {  
            $insert = array_map('addslashes', $insert); //使用addslashes,是避免在保存的值中出現' "這些會影響sql語句的情況。一般情況下,mysql設置為:轉義后的值在保存到數據庫后會自動反轉義。  
            $values[] = "\"".  implode("\",\"", $insert)."\"";  //拼接數據  
        }  
        $valueStr = implode("),(", $values);    //把數組數據拼接成字符串  
          
        //注意要插入的數據可能已經存在  
        $sql = "INSERT IGNORE INTO $table ($fields) VALUES ($valueStr)";    //重點是使用IGNORE,即遇到失敗的插入直接跳過,如,紀錄己存在  
          
        return mysqlInsert($sql);   //自定義的一個數據插入方法  
    }