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

我有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);

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

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

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

由于 皮特

有帮助吗?

解决方案

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

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

new_link的详细说明:

  

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top