Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-断开和连接到多个数据库_Php_Mysql_Database_Disconnect - Fatal编程技术网

php-断开和连接到多个数据库

php-断开和连接到多个数据库,php,mysql,database,disconnect,Php,Mysql,Database,Disconnect,我希望能够通过循环从当前数据库切换到多个数据库: $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 ) ) { $co

我希望能够通过循环从当前数据库切换到多个数据库:

$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 );

它确实插入和更新来自其他数据库的详细信息,但它也插入和编辑来自当前用户数据库的数据,这是我不想要的。有什么想法吗?

您可能有错误的数据库设计。

您可能有错误的数据库设计。

我看到的一个改进是,您可以使用一个查询来复制或更新

语法如下所示:

INSERT INTO mytable (field_list.....) VALUES (values_list...) 
    ON DUPLICATE KEY 
UPDATE field1 = val1 ...

我看到的一个改进是,您可以使用一个查询来复制或更新

语法如下所示:

INSERT INTO mytable (field_list.....) VALUES (values_list...) 
    ON DUPLICATE KEY 
UPDATE field1 = val1 ...

永远不要使用php mysql_select_db()基金会-因为您发现代码(和编码者)很快就会变得非常混乱

在查询中明确说明数据库:

SELECT * FROM main_database.a_table....

UPDATE alternate_db.a_table SET...

REPLACE INTO third_db.a_table...

C.

永远不要使用php mysql\u select\u db()基金会-因为您发现代码(以及编码者)很快就会变得非常混乱

在查询中明确说明数据库:

SELECT * FROM main_database.a_table....

UPDATE alternate_db.a_table SET...

REPLACE INTO third_db.a_table...

C.

在while循环期间,您正在重新分配$query。这将产生奇怪的结果。在while循环期间重新分配$query时,将$query2用于循环内的查询。这将产生奇怪的结果。使用$query2进行循环内的查询

哇,我只能想象这会浪费多少带宽……哇,这是一个多么有建设性和有用的评论。请重新命名您的问题。您没有“断开和连接”到多个数据库。您只是在更改架构。而且,您对每封电子邮件都有单独的数据库?哇!这真是糟糕的数据库建模。另外,如果有帮助的话,
while()
语句中的
mysql\u fetch\u array()
调用将从循环2开始具有某种未定义的行为,因为它与以前的模式不同。你应该做两个循环:在第一个循环中,你从你的主数据库获取所有东西并存储在一个数组中,在第二个循环中你处理它。不,不是每封电子邮件,它只是作为参考。哇,我只能想象这浪费了多少带宽……哇,这是一个多么有建设性和有益的评论。请重新命名你的问题。您没有“断开和连接”到多个数据库。您只是在更改架构。而且,您对每封电子邮件都有单独的数据库?哇!这真是糟糕的数据库建模。另外,如果有帮助的话,
while()
语句中的
mysql\u fetch\u array()
调用将从循环2开始具有某种未定义的行为,因为它与以前的模式不同。你应该做两个循环:在第一个循环中,你从你的主数据库获取所有东西并存储在一个数组中,在第二个循环中,你处理它。不,不是每封邮件,它只是作为参考。这不是答案,因为我重新启动了:-),但这似乎是关于我想要什么的有用信息,所以谢谢你。顺便说一下,看看代码,我认为这一切都可以通过DBMS上的几个SQL语句(使用database_name.table_name构造)来完成,而不必将数据拉入PHP/使用循环。这不是答案,因为我重新启动了:-),但这似乎是关于我所追求的有用信息,所以谢谢。顺便说一下,看看代码,我认为这一切都可以通过DBMS上的几个SQL语句来完成(使用database_name.table_name构造),而不必使用循环将数据拉入PHP/中。