更改连接的数据库

时间:2009-06-18 22:22:57

标签: php mysql database-connection

我似乎在这上面来回走动,有时它对我有用,经常它没有,我无法弄清楚如何/为什么我有时可以让它上班,而在其他时候它不会

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

包含这样的

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

if (!$SGcon)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("sGopen", $SGcon);

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

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

if (!$PTcon)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("pTsecond", $PTcon);

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

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

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

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

数据库之间有很多来回,因为我正在将一个数据库中的数据与另一个数据库中的数据进行比较,所以我也试图提高效率。

由于 皮特

3 个答案:

答案 0 :(得分:1)

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

如果你在数据库之间做了很多比较,那么我只需要使用1个select语句一次查询所有数据库。

答案 1 :(得分:1)

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

传递new_link=true将避免此行为,尽管数据库连接可能很昂贵,因此您应该尝试尽可能少地保持打开状态。

new_link的详细说明:

  

如果再次拨打电话   mysql_connect()也一样   参数,没有新的链接   建立,但相反,链接   已打开链接的标识符   将被退回。 new_link   参数修改此行为和   让mysql_connect()始终打开   新链接,即使是mysql_connect()   以前叫过同样的   参数。在SQL安全模式下,这个   参数被忽略。

答案 2 :(得分:1)

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