请看下面的代码,有两个数据库连接。
首先,它从第一个连接获取数据,然后插入到第二个数据库连接中,但它不会插入-我可以错误地说Unknown column 'fullname' in 'field list'
当我在phpMyAdmin中手动尝试SQL query时,它工作得很好...
$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));
}发布于 2011-09-27 00:23:28
感谢@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));不过,这真的很奇怪。
发布于 2011-09-27 00:48:29
这种行为并不奇怪。只需在mysql_connect调用中添加$link参数,并将其设置为true即可。缺省情况下它是False,这意味着用相同的参数重用这个函数,这就是你所做的,因为数据库名称不在mysql-上,它将用相同的参数重用现有的连接。所以你有两个变量,但只有一个连接。
这意味着您只需移动此连接中使用的数据库。使用db名称作为前缀修复了这个问题,因为如果连接在同一个db服务器上,则MySQL允许来自同一连接的基间操作。
https://stackoverflow.com/questions/7557877
复制相似问题