[英]is there an alternate to using a for loop to insert multiple queries
我想從數組中插入數據。 下面是一個示例情況。
我從朋友列表(fb)中獲取所有可用的朋友,並將它們存儲在數組中。
現在,我想將其數據( name, fbid, birthday
)插入表中。
目前,我正在使用for循環執行此操作,以下是示例代碼。
<?php
$friendsname = $_POST['name'];
$friendsfbid = $_POST['fbid'];
$friendsbday = $_POST['birthday'];
for($i<0;count($friendsfbid);$i++){
$sql_query = "INSERT INTO table (fbid, name, birthday) VALUES ('$friendsfbid[$i]','$friendsname[$i]','$friendsbday[$i]') ON DUPLICATE KEY UPDATE fbid='$friendsfbid[$i]', name='$friendsname[$i]', birthday='$friendsbday[$i]'";
}
?>
現在,如果我有300個朋友,這將循環300次。
朋友越多,處理數據所需的時間就越多。
有沒有一種方法可以避免這種情況或提高代碼的性能。 ?
在MySQL中使用PHP
請參閱此查詢,希望這將提高我們的代碼和速度。
避免在循環中執行SQL查詢
一個常見的錯誤是將SQL查詢放入循環中。 這將導致數據庫多次往返,並且腳本速度明顯降低。 在下面的示例中,您可以更改循環以構建單個SQL查詢並一次插入所有用戶。
foreach ($userList as $user) {
$query = 'INSERT INTO users (first_name,last_name) VALUES("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
mysql_query($query);
}
您可以將數據合並到一個數據庫查詢中,而不必使用循環。
$userData = array();
foreach ($userList as $user) {
$userData[] = '("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
}
$query = 'INSERT INTO users (first_name,last_name) VALUES' . implode(',', $userData);
mysql_query($query);
一次插入多行。 看這個例子 :
INSERT INTO example
(example_id, name, value, other_value)
VALUES
(100, 'Name 1', 'Value 1', 'Other 1'),
(101, 'Name 2', 'Value 2', 'Other 2'),
(102, 'Name 3', 'Value 3', 'Other 3'),
(103, 'Name 4', 'Value 4', 'Other 4');
遍歷php以生成多行數據,並在最后添加多行后發出單個插入
$sql = '';
foreach($friendsfbid as $key => $value){
$sql .= INSERT INTO table (fbid, name, birthday) VALUES ('$value[$key]','$friendsname[$key]','$friendsbday[$key]') ON DUPLICATE KEY UPDATE fbid='$value[$key]', name='$friendsname[$key]', birthday='$friendsbday[$key]'";
}
mysql_query($sql);
您可以將sql INSERT堆疊為字符串,然后通過僅調用一次查詢函數來運行它們。 那應該加快過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.