Как вы выполняете несколько операторов 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

Надеюсь, что это поможет вам.