2010-07-16 37 views
0

我试图运行一个SQL命令来更新多个数据库。如果我将'n下面的sql代码直接复制到PHPMYADMIN中,它执行得很好,但是当我通过php运行sql时它不会更新?SQL没有更新多个数据库...我的SQL有什么问题?

如果我通过我的PHP脚本单独运行每个数据库的更新,它们都更新正常,所以我很困惑?

我在做什么错?

SQL代码:

UPDATE rst.users a, rst.user_type b 
SET a.first_name='Timsd',a.last_name='Lebaronsd',a.password='timsd', 
a.email='[email protected]', a.user_type_id='5',a.language_code='en_US', 
    a.timezone='Pacific/Midway', create_ts = '2010-07-16 12:33:31' 
WHERE a.user_type_id = b.user_type_id AND b.account_id = 1 AND a.users_id = 90; 

use externalusers; 

UPDATE externalusers.user 
SET fullname="'Timsd' 'Lebaronsd'", emailaddress="'[email protected]'" 
WHERE rst_id = 90 AND rst_account_id = 1; 

回答

3

出于安全原因,mysql_query()和类似的函数不能执行多个语句。
如果您确实想通过单一调用执行多个语句,请使用mysqli_multi_query()

P.S.这不是PHP功能,而是mysql C API的功能。

+0

谢谢......这将有所帮助。 – Ronedog 2010-07-16 18:56:26

+0

我可以将SQL放在存储过程中,然后在第1个sql语句中调用将更新到其他数据库的存储过程? – Ronedog 2010-07-16 20:17:26

+0

好吧,我倾销了存储过程的想法,并决定实施mysqli解决方案。现在效果很好。谢谢你的帮助。 – Ronedog 2010-07-16 21:22:56

0

PHP提供了一个安全功能,可以防止您使用单一的mysql_query()调用执行多个查询。不幸的是,使用本地mysql_ *函数是无法实现的。

但是我相信你可以做到这一点,如果你使用PDO或MySQLi。我强烈推荐PDO。

+0

我可以把SQL放在一个存储过程中,然后在第一个sql语句中调用将更新到其他数据库的存储过程? – Ronedog 2010-07-16 19:43:33

+0

你可以或者你可以建立两个数据库连接。 – Cfreak 2010-07-16 20:21:11

0

要添加来自其他人的答案,重要的是说您并未实际执行单个SQL语句,而是2个(或实际上可能是3个),一个接一个地执行。 PHPMYADMIN正在打破它们;并依次执行它们。