0

我似乎在这方面来来回回,有时它对我有用,但通常不起作用,而且我不知道我如何/为什么有时可以让它工作,而在其他时候却不行。

我有 5 个数据库,需要在日常维护期间从每个数据库中获取数据。对于每个数据库,我都有一个外部文件,其中包含我在页面中包含的所有数据库连接代码。

包括看起来像这样

$SGcon = mysql_connect("localhost","root","");

如果 (!$SGcon)
  {
  die('无法连接:' . mysql_error());
  }

mysql_select_db("sGopen", $SGcon);

对于每个数据库,我提供不同的变量,因此下一个数据库将是

$PTcon = mysql_connect("localhost","root","");

如果 (!$PTcon)
  {
  die('无法连接:' . mysql_error());
  }

mysql_select_db("pTsecond", $PTcon);

然后当我调用我的查询时,我使用

 
mysql_query($getQuery, $PTcon);
mysql_query($secondQuery, $SGcon);

我遇到的问题是我没有得到用于查询的正确数据库,看来我的脚本正在使用最后添加到页面的数据库。

有没有更好的方法来切换要使用的数据库连接?

当我将一个数据库中的数据与另一个数据库中的数据进行比较时,数据库之间有很多来回,所以我也在努力提高效率。

谢谢皮特

4

3 回答 3

1

我认为如果您在每个查询之间关闭数据库连接,您将解决问题。

如果您在数据库之间进行大量比较,那么我将只使用 1 个 select 语句一次查询所有数据库。

于 2009-06-18T22:24:22.010 回答
1

默认情况下,如果您将与先前调用相同的参数传递给mysql_connect,它将返回一个缓存连接(如果可用),而不是创建一个新连接。因此,这两个查询都针对您上次传递给的任何数据库运行mysql_select_db

传递new_link=true将避免这种行为,尽管数据库连接可能很昂贵,因此您应该尽量保持尽可能少的打开。

new_link的详细解释:

如果 mysql_connect() 使用相同的参数进行第二次调用,则不会建立新链接,而是返回已打开链接的链接标识符。new_link 参数修改了此行为并mysql_connect()始终打开一个新链接,即使mysql_connect()之前使用相同的参数调用也是如此。在 SQL 安全模式下,此参数被忽略。

于 2009-06-18T22:31:50.340 回答
1

除非有特定原因,否则您希望将数据库连接保持在尽可能低的水平。我会使用一个连接,并编写一个方法来扩展 mysql_query() 方法的功能。您可以将 SQL 字符串和表名传递给它,然后函数调用 mysql_select_db($tableName) 并重新使用相同的连接来处理 SQL。

于 2009-06-18T22:34:15.220 回答