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