我有一個關於如何實現我的使用case.I有一組我想在數據庫中插入陣列的查詢,但現在我很困惑如何我能做到這一點efficiently.I正在使用PHP和MySQL。下面是用例:
$shareUrl = array();
$theInsertUrl = array();
$authKeyArray = array();
以上是加工一些information.Now我必須將它插入到數據庫後,我得到的陣列,但不是一個一個地去做,我認爲有一個單插入將是更好的解決方案(如果不是請更正)。
對於多重插入我的SQL查詢的values
部分必須
($shareUrl[0],$theInsertUrl[0],$authKeyArray[0]),($shareUrl[1],$theInsertUrl[1],$authKeyArray[1]),...
我想編寫一個for循環,並創建一個多維數組這樣
for($i=0;$i<count_of_array;$i++){
$multiArray[$i]['shareUrl'] = $shareUrl[0];
$multiArray[$i]['theInsertUrl'] = $theInsertUrl[0];
$multiArray[$i]['authKeyArray'] = $authKeyArray[0];
}
但它仍然將是乏味的使用這在SQL查詢的values
部分,因爲它接受這樣的格式,如('val1','val2'),('val1','val2')
。我需要關於如何去實施它的建議?上述方法是否正確或有更好的解決方案或我應該使用單插入語句嗎?
一個忠告是:不要試圖太早優化。無論如何,多行單插入的確速度更快 - 當你有很多行時。如果你每天只需插入數十行數據,你就不需要*來優化它,如果我們談論的是成千上萬的數據,你會注意到優化。基本上,您可以節省每個查詢與主鍵生成時間之間的請求時間。 爲了幫助您獲得更多信息,您是使用純粹的'mysql_'函數,'mysqli'還是'PDO'? 有些數字也有幫助,比如陣列有多大。 – aleation
我正在使用'mysqli'功能!其實我正在做一個文件共享應用程序。因此,可以同時插入很多插件!最初雖然數量不會很大,但隨着我的進步,它會快速增長! – KillABug
對不起,我不熟悉'mysqli',從mysql跳到PDO,我不確定'mysqli'是否已經命名參數綁定,據我所知可以按順序使用問號'?',但不是:像PDO中的value1。所以我不確定在實現上,更好的讓一個更有經驗的'mysqli'來回答你。順便說一句,你應該使用'mysqli'中的準備語句,或者你並不是真的注入安全 – aleation