Thinkphp中的Model操作有兩個方法:add()和addAll
1 $User = M("User"); // 實例化User對象 2 $data['name'] = 'ThinkPHP'; 3 $data['email'] = '[email protected]'; 4 $User->add($data); 5 6 $dataList[] = array('name'=>'thinkphp','email'=>'[email protected]'); 7 $dataList[] = array('name'=>'onethink','email'=>'[email protected]'); 8 $User->addAll($dataList);
addAll方法可以做到批量添加數據的功能,也就是MySQL的這種用法:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
數據量很多情況下盡量選擇批量插入而不是循環逐條插入,否則你的數據庫會吃不住掛掉。
不過如果你想當然的將所有數據全部存入一個數組並進行addAll也同樣會面臨掛掉的情況,這是為什麼呢?
原因就是mysql中max_allowed_packet變量的配置限制了上傳sql語句的長度,在mysql配置中將他配置大一點就行了
max_allowed_packet = 100M
同時在插入數據時也做好批量插入的長度限制,畢竟你不知道什麼時候數據會變成百萬級別的。