Можно ли заменить конструкцию вида:
<?php
$count = 1;
$nids=array('1','5','12','21','55');
foreach ($nids as $nid) {
db_update('nweight')
->fields(array('weight' => $count))
->condition('nid' , $nid)
->execute();
$count++;
}
?>
одним запросом к базе данных?
А то в моем случае массив $nids может состоять и из 100 элементов и больше.
100 апдейтов за раз делать не хочу *)
Комментарии
если там в запросе будет in() то я скажу что длина таких конструкций у мускля лимитируется.
дели на пачки по 40-60 nid и делай таки несколько запросов.
db_query('UPDATE ....
Полностью выглядит так:
<?php
//$_POST['tdoo_nid'] - одномерный массив, состоящий из nid приехавший на AJAX запросе.
if ($_POST['tdoo_nid']) {
$count = 1;
// Упорядочиваем индексы в базе данных:
foreach ($_POST['tdoo_nid'] as $snid) {
db_update('nweight')
->fields(array('tdoo_weight' => $count))
->condition('nid' , $snid)
->condition('uid' , $GLOBALS['user']->uid)
->execute();
$count++;
}
}
?>
Никаких in(), как видите.
Можно решить в один запрос?
нет