我正在编写一个 cronjob,它将从一个表中传输数据,对其进行处理,然后将其应用于 Web 应用程序。为此,我有 2 个单独的数据库连接。目前,连接凭据是相同的,只是它是不同的数据库,但在上线时,它将完全分开。
问题是我正在创建一个连接,然后在我的班级中将其分配给 $this->staging,另一个称为 $this->production。我使用 mysql_ping 来确保两个连接都正常工作。
似乎发生的情况是,当它进行查询时,它会忽略连接标识符($this->staging 示例)并尝试对创建的 2 个连接中的最后一个进行查询。
我在查询中使用连接标识符:
// Connection:
$this->staging = $this->mysql($config['staging']);
$this->production = $this->mysql($config['production']);
$sql = "SELECT * FROM TABLE";
$query = mysql_query($sql,$this->staging);
// Returns an unknown table in database defined in $this->production.
我将 mysql_connect 作为 $this->mysql() 方法返回,而不是 mysql_select_db()。如果我尝试返回 mysql_select_db() mysql_ping 不起作用。
这是 mysql() 方法:
// connect(): Connect to a database (MySQL):
private function mysql($cred) {
$connect = mysql_connect($cred['server'],$cred['username'],$cred['password']);
if($connect) {
$db = mysql_select_db($cred['database']);
if($db) {
return $connect;
} else {
$this->informer("[FATAL]","Could not make a mysql database connection on server ".$_SERVER['SERVER_ADDR']." for database: ".$cred['database']);
}
} else {
$this->informer("[FATAL]","The database credentials appears to be wrong. ".$_SERVER['SERVER_ADDR']." for the mysql database: ".$cred['database']);
}
}