Dal*_*ira 1 php mysql performance for-loop
我想从数组中插入数据.以下是一个示例情况.
我抓住朋友列表中的所有朋友(fb)并将它们存储在一个数组中.
现在我想将他们的data(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]'";
}
?>
Run Code Online (Sandbox Code Playgroud)
现在,如果我有300个朋友,这将循环300次.
朋友越多,处理数据的时间就越多.
有没有办法避免这种情况或提高代码的性能.?
将PHP与mySQL结合使用
请看这个查询希望这将改善我们的代码和速度.
避免在循环中进行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);
}
Run Code Online (Sandbox Code Playgroud)
您可以将数据组合到单个数据库查询中,而不是使用循环.
$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);
Run Code Online (Sandbox Code Playgroud)