Я посмотрел на stackoverflow для похожего вопроса, но не нашел именно то, что искал, так что здесь. В phpMyAdmin у вас может быть несколько запросов в одном операторе, и он выполняет его для вас, например: '
UPDATE `test` WHERE `test2` = 4;
UPDATE `test` WHERE `test4` = 8;
UPDATE `test` WHERE `test8` = 1;
Теперь, если я попытаюсь сделать что-то подобное в PHP, это вообще не сработает. например:
$test = 'UPDATE `test` SET `value` = "123" WHERE `test2` = 4;
UPDATE `test` SET `value` = "321" WHERE `test4` = 8;
UPDATE `test` SET `value` = "533" WHERE `test8` = 1;';
mysql_query($test);
дает и ошибка:
У вас ошибка в синтаксисе SQL;
проверьте руководство, которое соответствует
ваша версия сервера MySQL для
правильный синтаксис для использования рядом с '; ОБНОВИТЬ
test
SET value = "123" WHERE test2
= 4; ОБНОВЛЕНИЕ test
SE 'в строке 1
Можно ли даже объединить, скажем, несколько запросов, как указано выше, в одном выражении? Я хочу сделать это в следующей ситуации: (Логика этого, вероятно, очень плохая, но у меня мало опыта работы с MySQL, поэтому, пожалуйста, дайте мне знать, если есть лучший способ сделать это)
Следующие циклы за пару раз:
function SaveConfig($name, $value)
{
global $sql_save_query;
$sql = 'SELECT * FROM `config` WHERE `name` = "'.$name.'"';
$res = mysql_query($sql);
if($res)
{
$sql_save_query .= 'UPDATE `config` SET value = "'.$value.'" WHERE `name` = "' .$name. '"; '."\n";
}
else
{
$sql_save_query .= 'INSERT INTO `config`(`id`,`name`,`value`) VALUES("","' .$name. '","' .$value. '"); '."\n";
}
}
Затем после завершения цикла он запускается:
mysql_query($sql_save_query);
Что выдает ошибку:
В вашем синтаксисе SQL есть ошибка;
проверьте руководство, которое соответствует
ваша версия сервера MySQL для
правильный синтаксис для использования рядом с '; ОБНОВИТЬ
config
SET value = "" WHERE name
=
"Fcolour2"; ОБНОВЛЕНИЕ config
SE 'в
строка 1
Теперь мой другой вариант (на мой взгляд) - просто выполнять SQL-запрос после каждого цикла, по одному запросу за раз. Но разве это не было бы плохо / медленно / плохо?