2010-02-24 66 views

回答

6

mysql_query只允许您一次进行一个查询。这有助于防止SQL注入。

从文档:

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

如果你想要做的是确保在一个事务中运行两个查询,与PHP和MySQL事务控制退房this article

0

出于安全原因,你只能运行一次一个查询。尽管你可以循环查询数组,并且可以独立运行。

$queries[] = "INSERT INTO users (name) VALUES ('jonathan')"; 
$queries[] = "UPDATE users SET name = 'Jonathan' WHERE name = 'jonathan'"; 

foreach ($queries as $query) { 
    mysql_query($query); 
} 

你甚至可以爆炸包含两个查询到一个数组一个字符串:

$sql = "INSERT INTO users (name) values ('jonathan'); 
     INSERT INTO users (name) values ('sampson')"; 

$queries = explode(";", $sql); 

$queries将通过成为查询的一个数组,然后我们可以循环。

+0

这似乎没有比简单的'mysql_query('INSERT ...')更短或更好;的mysql_query( '更新...');'。 ; o) – deceze 2010-02-24 03:07:13

+0

@deceze不要关注具体的例子。 OP没有询问更短或更好的查询。他们问他们一起跑他们*。与硬编码的'mysql_query()'调用不同,考虑数组可以动态构建。 – Sampson 2010-02-24 03:08:00

+0

好吧,你还没有把它们*一起运行,但是你的源代码变长了。无论如何,您必须在源代码的某个位置编写和运行查询,并且尽可能简洁明了地完成查询。在其他地方动态运行查询在大多数情况下都是非法的,恕我直言。 – deceze 2010-02-24 03:12:24