我希望能够通过循环从当前数据库切换到多个数据库:
$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 );
它确实插入并更新了其他数据库的详细信息,但它也插入并编辑了当前用户数据库中我不想要的数据。有什么想法吗?
答案 0 :(得分:2)
永远不要使用php mysql_select_db()基金 - 因为你发现代码(和编码器)很快就会变得很混乱。
在查询中明确说明数据库:
SELECT * FROM main_database.a_table....
UPDATE alternate_db.a_table SET...
REPLACE INTO third_db.a_table...
下进行。
答案 1 :(得分:1)
您的数据库设计可能有错误。
答案 2 :(得分:1)
我看到的一个改进是您可以使用一个查询来复制或更新
语法如下:
INSERT INTO mytable (field_list.....) VALUES (values_list...)
ON DUPLICATE KEY
UPDATE field1 = val1 ...
答案 3 :(得分:0)
你在while循环期间重新分配$ query。这会产生奇怪的结果。使用$ query2进行循环内的查询