まず、このシステムではもうmysql_関数を使用するべきではないことがわかりました。mysql_select_dbの後に正しいデータベースでMySqlクエリが実行されていない
システムは2つのデータベースに接続しています。クエリを実行する前に、mysql_select_db()を使用してクエリを実行する正しいデータベースを選択しています。正しいデータベースは 'database2'です。データベース自体への接続が機能し、mysql_select_db関数がtrue/1を返しています。
コードがローカルに動作しますが、ここで
が失敗したクエリの例です...サーバーでは動作しません...
global $DBtwo;
mysql_select_db('database2', $DBtwo);
$sql = "INSERT INTO table
(Column1, Column2, Column3)
VALUES
('Value1', 'Value2', 'Value3')";
$result = mysql_query($sql, $DBtwo);
die(mysql_error());
このスクリプトは、次の出力を返します...
このエラーは、クエリがdatabase2ではなくdatabase1で実行されていることを示しています。ただし、クエリが実行される前にdatabase2が正常に選択されています。
前述のとおり、このエラーはサーバーでのみ発生します。ローカルで実行するとクエリが機能し、正しいデータベースが使用されます。
ご意見やご指摘をお待ちしております。乾杯。
あなたは単にselect_db呼び出しが成功したと仮定しているだけです。 mysql_select_db(...)またはdie(mysql_error($ DBtwo)) 'を実行して、接続ハンドルが明示的にリストされていないため、複数のdb接続を開いている場合、エラー呼び出しは最後に開いたものを使用します。つまり、WRONG dbハンドルのエラーをチェックしている可能性があります。 –
ご回答いただきありがとうございます。私は調査中です... – Moggz
MySQLの使用を中止し、 'MySQLi'を'/'' '' PDO''と同様に調査します。 OOPアプローチを使って研究することもできます。データベースを混在させるというこの問題は、そのコード構造で実現する可能性が低く、不可能でさえあります。 – Martin