Один из подходов, которые я рекомендую для этого, - это использование подготовленного оператора через расширение mysqli
.Чтобы процитировать основное преимущество:
Фактическая цель использования подготовленного оператора в sql - сократить затраты на обработку запросов;НЕ отделять данные от запроса.Вот как это используется с php СЕЙЧАС, а не так, как оно было разработано для использования в первую очередь.С помощью SQL вы снижаете стоимость выполнения нескольких похожих запросов, используя подготовленный оператор. Это исключает синтаксический анализ, проверку и чаще всего генерирует план выполнения для указанного запроса заранее.Вот почему они работают в цикле быстрее, чем их кузены IMMEDIATE Query.
Источник: http://us2.php.net/manual/en/mysqli.prepare.php#103730
Чтобы дать пример того, как вы можете использовать это:
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if ($stmt = $mysqli->prepare("INSERT INTO `images` (`location`, `size`, `othervalues`) VALUES(?, ?, ?)")) {
foreach($images as $image) {
// s = string value
// i = integer value
$stmt->bind_param("sis", $image['location'], $image['size'], $image['othervalues']);
$stmt->execute();
}
$stmt->close();
}
// Your prepared statement failed, handle the error
else {
}
$mysqli->close();
Я бы порекомендовал прочитать по mysqli :: prepare и mysqli_stmt :: bind_param для получения дополнительной информации о том, как работает процесс.Я также рекомендую прочитать подготовленные операторы в документации MySQL .