-2

フォームがあり、フォーム データを 2 つのデータベースに送信したいと考えています。しかし問題は、両方のデータベースが異なるサーバー上にあることです。私はmysqlを初めて使用するので、それを行う方法が正確にはわかりません。私はphpで働いています。私のコードをあなたと共有していますが、正しく動作していません。これをチェックしてください:

$con = mysql_connect('differenthost','user1','pass1');
mysql_select_db('dbname1',$con);

$path = "misc/classified/".$submiturl;

mysql_query("insert into tablename1 (title,description,status,parent_id,path) values ('$submiturl','$submiturl','active','68','$path')") or die(mysql_error());
mysql_close($con);

mysql_connect('localhost','user2','pass2');
mysql_select_db('dbname2');

$check = mysql_query("select count(*) from tablename2 where userid = '".$_SESSION['userid']."' and datecreated = '$datecreated'") or die(mysql_error());

フォームを送信すると、このエラーが発生します。

Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'differenthost' (25) in /home/class/public_html/microworker/submiturl.php on line 11

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/class/public_html/microworker/submiturl.php on line 12

Warning: mysql_query() [function.mysql-query]: Access denied for user 'user2'@'localhost' (using password: NO) in /home/class/public_html/microworker/submiturl.php on line 16

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/class/public_html/microworker/submiturl.php on line 16
Access denied for user 'user2'@'localhost' (using password: NO)

正しい構文は何ですか?

4

6 に答える 6

1

接続文字列で間違ったサーバー名を使用しています

$con = mysql_connect('differenthost','user1','pass1');

ユーザー localhost をサーバー名として

$con = mysql_connect('localhost','user1','pass1');

そしてあなたの完全なコードが必要です

$con = mysql_connect('localhost','user1','pass1');
        mysql_select_db('dbname1',$con);

        $path = "misc/classified/".$submiturl;

        mysql_query("insert into tablename1 (title,description,status,parent_id,path) values ('$submiturl','$submiturl','active','68','$path')") or die(mysql_error());
        mysql_close($con);

        mysql_connect('localhost','user2','pass2');
        mysql_select_db('dbname2');

        $check = mysql_query("select count(*) from tablename2 where userid = '".$_SESSION['userid']."' and datecreated = '$datecreated'") or die(mysql_error());

またはリモートホストを使用している場合は、ホスト名を確認してください

于 2013-09-27T09:34:39.313 に答える
0

この線

Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'differenthost' (25) in /home/class/public_html/microworker/submiturl.php on line 11

アプリケーションがデータベースに接続できないことを明確に示しています。この行に正しい ホスト名および/またはユーザー名/パスワードを入力してみてください

$con = mysql_connect('differenthost','user1','pass1');
于 2013-09-27T09:36:45.277 に答える
0

まず、接続が成功するかどうかを確認する必要があります。最初のインスタンスで接続エラーが発生しています。

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

http://www.php.net/manual/en/function.mysql-connect.phpを参照してください。

于 2013-09-27T09:39:00.763 に答える
0

このコードを使用しました

mysql_query で $con と $con2 を 2 番目のパラメータとして使用できます

$con = mysql_connect('differenthost','user1','pass1');
mysql_select_db('dbname1',$con);

$path = "misc/classified/".$submiturl;

mysql_query("insert into tablename1 (title,description,status,parent_id,path) values ('$submiturl','$submiturl','active','68','$path')",$con) or die(mysql_error());
mysql_close($con);

$con2 = mysql_connect('localhost','user2','pass2');
mysql_select_db('dbname2');

$check = mysql_query("select count(*) from tablename2 where userid = '".$_SESSION['userid']."' and datecreated = '$datecreated'",$con2) or die(mysql_error());

これを参考に

に対して複数の呼び出しを行うことができmysql_connect()ますが、パラメーターが同じ場合は、' $new_link' (4 番目) パラメーターに true を渡す必要があります。そうでない場合、同じ接続が再利用されます。

それで、あなたは持っています

$dbh1 = mysql_connect($hostname, $username, $password); 
$dbh2 = mysql_connect($hostname, $username, $password, true); 

mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);

次に、データベース 1 にクエリを実行するには、次のようにします。

mysql_query('select * from tablename', $dbh1);

データベース 2 の場合:

mysql_query('select * from tablename', $dbh2);

あるいは、mysql ユーザーが両方のデータベースにアクセスでき、それらが同じホスト上にある場合 (つまり、両方の DB が同じ MySQL 接続からアクセスできる場合)、次のことができます。

  • 1 つの接続を開いたままにし、呼び出しmysql_select_db()を続けて切り替えます。これはきれいな解決策ではないと思います。間違ったデータベースなどにクエリを実行するケースが簡単に発生します。
  • データベース名 (例: SELECT * FROM database2.tablename) を指定するクエリを使用しますが、これも実装が面倒になる可能性があります。

おそらくより良いアプローチであるため、代わりに PDO を使用することに関する troelskn の回答もお読みください。

于 2013-09-27T09:40:16.700 に答える