sql >> Database >  >> RDS >> Mysql

is er een alternatief voor het gebruik van een for-lus om meerdere query's in te voegen?

Zie deze vraag, ik hoop dat dit onze code en snelheid zal verbeteren.

Vermijd het uitvoeren van SQL-query's in een lus

Een veelgemaakte fout is het plaatsen van een SQL-query in een lus. Dit resulteert in meerdere retourvluchten naar de database en aanzienlijk tragere scripts. In het onderstaande voorbeeld kunt u de lus wijzigen om een ​​enkele SQL-query te maken en al uw gebruikers tegelijk in te voegen.

foreach ($userList as $user) {

  $query = 'INSERT INTO users (first_name,last_name) VALUES("' . $user['first_name'] . '", "' . $user['last_name'] . '")';

  mysql_query($query);

  }

In plaats van een lus te gebruiken, kunt u de gegevens combineren in een enkele databasequery.

$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);


  1. Tabelafdruk past niet op paginaformaat

  2. MySQL-replicatiefout 2003

  3. Hoe JSON te parseren in MYSQL-trigger

  4. Willekeurige id's in sqlalchemy (pylonen)