无法将数据插入第二个数据库连接

时间:2011-09-26 15:59:38

标签: php mysql sql database

请参阅下面的代码,有两个数据库连接。

首先它从第一个连接获取数据,然后插入第二个数据库连接,但不会插入 - 我可能会出错Unknown column 'fullname' in 'field list'

当我在phpMyAdmin中手动尝试SQL查询时,它工作正常......

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

2 个答案:

答案 0 :(得分:2)

这种行为没什么好奇怪的。只需在mysql_connect调用中添加$ link参数,并将其设置为true。默认情况下它是False,这意味着重复使用此函数具有相同的参数,这是你正在做的,因为db名称不在你的mysql-connect上,重用具有相同参数的现有连接 。所以你有两个变量但只有一个连接。

这意味着您只需移动此连接中使用的数据库。使用db名称进行前缀修复了问题,因为如果它位于同一个数据库服务器上,MySQL允许来自同一个连接的基本操作。

答案 1 :(得分: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));

但这真的很奇怪。