2011-07-25 52 views
14

说我想做UPDATE table SET name = 'bob'UPDATE table SET age = 55 WHERE name = 'jim'如何在同一个mysql_query()中做它们?如何在一个mysql_query中执行多个SQL语句?

编辑:因为这个问题有意见,我想指出的是,作为PHP 5.5 mysql_querymysql_*功能现在都过时,不应该使用了相当数量。

+1

mysql_query()(通常是PHP的mysql驱动程序)出于安全原因不支持在单个查询()调用中执行多个查询:它消除了SQL注入攻击向量之一。换句话说:你不能这样做。 –

回答

13

我从来没有试过这个,但我认为你可以使用mysqli::multi_querymysql_query拒绝多个语句的好处之一是它会立即排除一些更常见的SQL注入攻击,例如将'; DELETE FROM ... #添加到语句中。因此,您可能需要小心多条语句。

7

,因为它说的manual的顶部:

的mysql_query()发送一个唯一的查询(多个查询不支持)到服务器上的当前活动数据库与指定link_identifier关联。

+10

你可以在互联网上的任何其他地方得到嘲笑 - 欢迎莱安德罗*不*把它带到SO。 :P –

2

你可以做这样的 “条件” 更新:

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 

希望它可以帮助你。

相关问题