2011-09-26 149 views
3

請參閱下面的代碼,有兩個數據庫連接。無法將數據插入到第二個數據庫連接

首先,它得到第一個連接的數據,然後插入到第二個數據庫連接,但它不會插入 - 我可以一個錯誤說Unknown column 'fullname' in 'field list'

當我試圖SQL查詢在phpMyAdmin手動,它做工精細...

$db_new = mysql_connect('localhost', 'root', 'password'); 
if (!mysql_select_db("menu_new", $db_new)) { 
    die("Cant connect menu_new DATABASE"); 
} 

$db_old = mysql_connect('localhost', 'root', 'password'); 
if (!mysql_select_db("old_menu", $db_old)) { 
    die("Cant connect old_menu DATABASE"); 
} 

$SQL_old = "SELECT * FROM old_table"; 
$q = mysql_query($SQL_old, $db_old); 

while ($row = mysql_fetch_assoc($q)) { 
    $name = $row['name']; 

    $SQL = "INSERT INTO tbl_name (fullname) values ('$name')"; 

    //Problem Here - It wont insert into second database 
    mysql_query($SQL, $db_new) or die(mysql_error($db_new)); 
} 
+1

確表'tbl_name'是否有名爲'fullname'的列? –

+1

你確定這是因爲連接嗎?該列是否存在於新表中?你有1000%的把握嗎? –

+0

我是100%肯定的......這與連接有關。 –

回答

1

謝謝@Konerak的建議,並確實工作!

要從數據庫連接插入/選擇數據,您必須在表名之前包含數據庫名稱。

對於實例

來源:

mysql_query("INSERT into tbl_name (fullname) values ('1')", $db_new) or die(mysql_error($db_new)); 

要:

mysql_query("INSERT into menu_new.tbl_name (fullname) values ('1')", $db_new) or die(mysql_error($db_new)); 

這是非常奇怪的,但。

+0

哦 - 兩個連接實際上*在同一個主機**上?是的,「使用數據庫新/舊」可能與此衝突。好找! – Konerak

2

這種行爲沒有什麼奇怪的。只需在您的mysql_connect調用中添加$ link參數,並將其設置爲true即可。默認情況下,它是假的,這意味着重複使用相同參數的這個函數,這就是你正在做的db名稱不在你的mysql連接上,將重複使用現有的連接使用相同的參數。所以你有兩個變量,但只有一個連接。

這意味着你只是移動在這個連接中使用的數據庫。使用db名稱前綴可以解決問題,因爲如果MySQL位於同一個數據庫服務器上,它允許來自同一連接的基礎間操作。

+0

這就解釋了爲什麼。謝謝! – Konerak