Как вы выполняете несколько операторов SQL в одной mysql_query?
Скажем, я хотел сделать UPDATE table SET name = 'bob'
и UPDATE table SET age = 55 WHERE name = 'jim'
, как это сделать в той же mysql_query()?
EDIT:. Поскольку этот вопрос имеет большое количество просмотров, я хотел бы указать, что с PHP 5.5 mysql_query
и другие функции mysql_*
теперь устарели и не должны быть б.
Ответы
Ответ 1
Я никогда не пробовал это, но думаю, вы можете использовать mysqli:: multi_query. Одна из хороших вещей о mysql_query
, отвергающей несколько операторов, заключается в том, что она сразу же исключает некоторые из наиболее распространенных атак SQL-инъекций, например добавление '; DELETE FROM ... #
в оператор. Поэтому вы можете быть осторожны с несколькими утверждениями.
Ответ 2
Как говорится в верхней части manual:
mysql_query() отправляет уникальный запрос (несколько запросов не поддерживаются) к текущей активной базе данных на сервере, которая связана с указанным link_identifier.
Ответ 3
Вы можете сделать "условное" обновление таким образом:
create table test (
id int not null auto_increment primary key,
name varchar(50),
age tinyint
) engine = myisam;
insert into test (name) values ('jim'),('john'),('paul'),('mike');
update test
set age =
case
when name = 'jim' then 10
when name = 'paul' then 20
else 30
end
Надеюсь, что это поможет вам.