0

ループを介して現在のデータベースから複数のデータベースに切り替えられるようにしたい:

$query = mysql_query("SELECT * FROM `linkedin` ORDER BY id", $CON ) or die( mysql_error() );
if( mysql_num_rows( $query ) != 0 ) {
    $last_update = time() / 60;
    while( $rows = mysql_fetch_array( $query ) ) {
        $contacts_db = "NNJN_" . $rows['email'];
        // switch to the contacts db
        mysql_select_db( $contacts_db, $CON );
        $query = mysql_query("SELECT * FROM `linkedin` WHERE token = '" . TOKEN . "'", $CON ) or die( mysql_error() );
        if( mysql_num_rows( $query ) != 0 ) {
            mysql_query("UPDATE `linkedin` SET last_update = '{$last_update}' WHERE token = '" . TOKEN . "'", $CON ) or die( mysql_error() );   
        }else{
            mysql_query("INSERT INTO `linkedin` (email, token, username, online, away, last_update) VALUES ('" . EMAIL . "', '" . TOKEN . "', '" . USERNAME . "', 'true', 'false', '$last_update')", $CON ) or die( mysql_error() );
        }
    }
    mysql_free_result( $query );
}
// switch back to your own
mysql_select_db( USER_DB, $CON );

他のデータベースからの詳細を挿入および更新しますが、現在のユーザーデータベースからのデータも挿入および編集しますが、これは望ましくありません。何か案は?

4

4 に答える 4

2

php mysql_select_db() ファンドションは絶対に使用しないでください。コード (およびコーダー) がすぐに混乱することがわかったからです。

クエリで DB を明示的に指定します。

SELECT * FROM main_database.a_table....

UPDATE alternate_db.a_table SET...

REPLACE INTO third_db.a_table...

C.

于 2010-03-25T13:58:27.857 に答える
1

データベースの設計が間違っている可能性があります。

于 2010-03-25T06:04:18.547 に答える
1

改善点の 1 つは、1 つのクエリを使用して複製または更新できることです。

構文は次のようになります。

INSERT INTO mytable (field_list.....) VALUES (values_list...) 
    ON DUPLICATE KEY 
UPDATE field1 = val1 ...
于 2010-03-25T07:00:09.637 に答える
0

while ループ中に $query を再割り当てしています。これは奇妙な結果をもたらします。ループ内のクエリに $query2 を使用します

于 2010-03-25T14:07:11.913 に答える