2

应用程序是 PHP + MSSQL。在多个连接中错误地更新。我有两个连接。

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

应该如何处理多个连接。

4

2 回答 2

1

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

所以,在伪代码中:

$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
于 2012-11-14T15:46:58.047 回答
0

我从论坛帖子中找到了我自己的解决方案。

评论如下。我对它的理解是:如果两个数据库具有相同的主机和用户名 mssql connect 只是使用这些参数返回上一个连接。愚蠢,但这就是正在发生的事情。

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

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

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

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

于 2014-09-23T16:34:59.797 回答