Как вы выполняете несколько операторов SQL в одном запросе mysql?


Скажем, я хотел сделать UPDATE table SET name = 'bob' и UPDATE table SET age = 55 WHERE name = 'jim' как мне сделать их в том же mysql_query()?

РЕДАКТИРОВАТЬ: Поскольку этот вопрос имеет достаточное количество просмотров, я хотел бы отметить, что начиная с PHP 5.5 mysql_query и другие функции mysql_* теперь устарели и не должны использоваться.

Author: Cœur, 2011-07-25

3 answers

Я никогда не пробовал этого, но я думаю, что вы можете использовать mysqli::multi_query. Одна из хороших вещей в mysql_query отклонении нескольких операторов заключается в том, что он немедленно исключает некоторые из наиболее распространенных атак с использованием SQL-инъекций, таких как добавление '; DELETE FROM ... # в оператор. Поэтому вам может потребоваться быть осторожным с несколькими утверждениями.

 13
Author: Mike, 2011-07-25 19:39:58

Как сказано в верхней части руководства :

Mysql_query() отправляет уникальный запрос (несколько запросов не поддерживаются) в текущую активную базу данных на сервере, связанную с указанным идентификатором link_identifier.

 7
Author: , 2011-08-16 21:08:24

Вы можете выполнить "условное" обновление следующим образом:

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

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

 2
Author: Nicola Cossu, 2011-07-25 19:34:24