是否有使用for循环插入多个查询的替代方法

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结合使用

Pra*_*jit 5

请看这个查询希望这将改善我们的代码和速度.

避免在循环中进行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)