1 つのテーブルからデータを転送し、処理してから Web アプリケーションに適用する cronjob を作成しています。これには 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_select_db() ではなく、$this->mysql() メソッドとして mysql_connect を返します。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']);
}
}