请参阅下面的代码,有两个数据库连接。
首先它从第一个连接获取数据,然后插入第二个数据库连接,但不会插入 - 我可能会出错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));
}
答案 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));
但这真的很奇怪。