Я должен обновить сотни записей сразу, и мне интересно, можно ли использовать один вызов mysqli_query
для обновления всех из них. Я знаю, что нельзя использовать что-то вроде:
UPDATE table SET col=value1,col=value2,col=value3 WHERE id IN (1,2,3)
Возможно ли каким-то образом использовать пользовательские функции или другой метод для одновременного обновления нескольких записей?
используйте mysqli_multi_query()
, с помощью которой вы можете выполнить все запросы и передать ей функцию mysqli_multi_query
Ответ: Да ! Вы можете сделать это в одном процессе через один файл.
<?php $connection=mysqli_connect("YourHost","UserName","Password","YourDatabase"); if(mysqli_connect_errno()){ echo "Error".mysqli_connect_error(); } mysqli_query($connection,"UPDATE table SET col='value1' WHERE id='1'"); mysqli_query($connection,"UPDATE table SET col='value2' WHERE id='2'"); mysqli_query($connection,"UPDATE table SET col='value2' WHERE id='3'"); ?>
Вы можете настроить и выбрать строки, которые вы хотите обновить, с определенными условиями, используя ГДЕ
Если я правильно понимаю, вы хотите обновить свои столбцы разными данными на основе разных условий, так что:
col = value1 WHERE id = 1 col = value2 WHERE id = 2 col = value3 WHERE id = 3
и т.д…
Если здесь неверно истолкован ive.
Я бы перебирал данные на PHP и выполнял несколько запросов, но если вы непреклонны в выполнении этого запроса в одном запросе, вы можете сделать что-то вроде следующего с вложенными выражениями IF.
$query = "UPDATE table SET col = IF( id IN (1),value1, IF(id IN (2),value2, IF id IN (3),value3,NULL) ) WHERE id IN (1,2,3)"
Если у вас есть большое количество условий, я бы просто придерживался нескольких запросов в PHP. MySQL может обрабатывать несколько сотен запросов одновременно, поэтому я действительно не стал бы беспокоиться об этом фронте.