php-mssql多重连接,错误地连接1记录了连接2中的更新,甚至连接2正确关闭

  • 本文关键字:连接 更新 错误 php-mssql 记录 php
  • 更新时间 :
  • 英文 :


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

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

应该如何处理多个连接。

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

因此,在伪代码中:

$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

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

评论如下。我的理解是:如果两个数据库都有相同的主机和用户名mssql-connect,那么就使用这些参数返回上一个连接。愚蠢,但事情就是这样。

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

一旦调用mysql_select_db,两个连接都将指向同一个数据库。在我的开发过程中,我通过在一个mysql_connect中使用IP作为服务器名,在第二个调用中使用localhost来绕过这一点。这创建了两个独立的连接,但限制了在同一服务器上可以使用的独立数据库的数量。

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

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

最新更新