2012-11-14 27 views
1

应用程序是PHP + MSSQL。 错误地在多个连接中更新。 我有两个连接。php mssql多连接,错误connect1记录连接2更新连连2关闭正确

  1. 开通connection1。
  2. 做一些过程。
  3. 开通connection2。 (注:要打开connection2,我们需要connection1数据库。)
  4. 在连接2中进行一些更新。
  5. 关闭连接2。
  6. 更新并在连接1中插入进程。但系统错误地更新到connection2数据库而不是connection1。

如何处理多个连接。

+1

请显示一些代码,这似乎是错误的,并在编码级别。我在脚本中多次使用了多个sql服务器连接,并且从未遇到过像你所描述的那种问题。 – smassey

+0

具有相同的问题。两个独立的连接。每当我使用它时,连接都是合格的。我打开connection1。然后打开connection2。然后在访问connection1后再次出现错误。请让我知道你是否找到了解决办法。 – danielson317

+0

我发现的博客文章有一个相同问题的简单示例。我的情况有点复杂,但行为是相同的:http://bytes.com/topic/php/answers/432001-ms-sql-multiple-connect-problem – danielson317

回答

0

您可能未在您的查询调用中指定连接处理程序。 mssql(如mysql)库默认使用LAST打开的连接作为默认连接。

所以,在pseudo_code:

$con1 = mssql_connect("blah blah blah"); 
$result = mssql_query("SELECT blah blah blah"); 
$con2 = mssql_connect("blah blah blah"); <-- last opened, new default 
$result2 = mssql_query("SELECT blah blah", $con1); 
              ^^^^^---force using original connection 
0

找到自己的解决方案,我认为从forum post

评论如下。我对它的理解是:如果两个数据库都有相同的主机和用户名mssql connect只是使用这些参数返回以前的连接。愚蠢的,但多数民众赞成在发生什么。

多次调用具有相同参数的mysql_connect只会导致创建一个资源/连接。一旦创建第一个,随后对mysql_connect的调用将返回相同的连接。

一旦你调用mysql_select_db,两个连接都将指向同一个数据库。在我的开发中,我通过在一个mysql_connect和localhost中使用IP作为服务器名称来解决这个问题。这创建了两个独立的连接,但限制了您可以在同一台服务器上使用的单独数据库的数量。

在一个脚本中,解决这个问题的另一种方法是在select语句中包含db名称,或者在select之前使用mysql_select_db在数据库之间切换。

我需要两个不同的连接,因为我不想在其他类中调用mysql_select_db。