Как вы выполняете несколько операторов SQL в одном запросе mysql?
Скажем, я хотел сделать UPDATE table SET name = 'bob'
и UPDATE table SET age = 55 WHERE name = 'jim'
как мне сделать их в том же mysql_query()?
РЕДАКТИРОВАТЬ: Поскольку этот вопрос имеет достаточное количество просмотров, я хотел бы отметить, что начиная с PHP 5.5 mysql_query
и другие функции mysql_*
теперь устарели и не должны использоваться.
3 answers
Я никогда не пробовал этого, но я думаю, что вы можете использовать mysqli::multi_query. Одна из хороших вещей в mysql_query
отклонении нескольких операторов заключается в том, что он немедленно исключает некоторые из наиболее распространенных атак с использованием SQL-инъекций, таких как добавление '; DELETE FROM ... #
в оператор. Поэтому вам может потребоваться быть осторожным с несколькими утверждениями.
Вы можете выполнить "условное" обновление следующим образом:
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
Надеюсь, что это поможет вам.