【问题标题】:Why would you force open a new connection in MSSQL and MySQL?为什么要强制在 MSSQL 和 MySQL 中打开新连接?
【发布时间】:2014-11-24 09:35:58
【问题描述】:

在函数mssql_connect中,有第四个参数叫做new_link

如果使用相同的参数对 mssql_connect() 进行第二次调用, 不会建立新的链接,而是建立链接标识符 已经打开的链接将被返回。这个参数修改了这个 行为并使 mssql_connect() 始终打开一个新链接,即使 之前使用相同的参数调用了 mssql_connect()。

我注意到我们的许多脚本已将此参数设置为 true。问题是,无法再联系到做出此决定的人,我真的很难想出一个有效的(阅读:理智的)原因,为什么在有效连接已经存在时应该强制打开新连接。

请注意,函数 mysql_connect 也有类似的参数。

【问题讨论】:

  • 这可能会帮助您更好地理解它 - link
  • @alphawow 好像编码不好。

标签: php mysql sql-server


【解决方案1】:

肯定只有非常罕见的用例。

我的理解是这样的: <vendor>_connect() 打开与数据库服务器的连接,而不是与特定数据库的连接。 如果您想在同一请求中使用同一服务器上的不同数据库,则需要管理访问权限 - 在同一连接上多次调用 <vendor>_select_db (mssql_select_db),或者与不同选定数据库的不同连接到同一个数据库服务器。

如果您想为对数据库的某些调用设置连接特定参数,则会出现同样的问题,但不是全部。例如,围绕正确字符集的恐惧(至少在使用 mysql 时)mysql_set_charset('utf8',$link);,如果有一些遗留的噩梦,让您同时使用 latin-1 和 utf8 内容。

[编辑] 伙计们,不要使用 mysql_* 函数!它们将很快被弃用并带来安全风险。该示例仅用于与 mssql_* 函数的简洁性和语义相似性!

【讨论】:

    【解决方案2】:

    这就是我的理解,并不声称它是 100% 正确的。 如果您使用相同的参数打开连接两次,则连接 ID 将相同,这可能会造成混乱,例如,如果您进行交易。这里有 new_link 参数 - 连接将使用不同的 id,所以一切都应该没问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-08
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 2016-08-08
      • 2011-01-04
      • 1970-01-01
      相关资源
      最近更新 更多