Не могу вставить данные во второе соединение с базой данных - PullRequest
3 голосов
/ 26 сентября 2011

См. Код ниже, есть два соединения с базами данных.

Сначала он получает данные из первого соединения, а затем вставляет во второе соединение с базой данных, но не вставляет - я могу сообщить ошибку 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));
}

Ответы [ 2 ]

2 голосов
/ 26 сентября 2011

Ничего странного в этом поведении.Просто добавьте параметр $ link в ваши вызовы mysql_connect и установите для него значение true.По умолчанию это False, и это означает, что повторное использование этой функции с теми же параметрами, что вы и делаете, поскольку имя db отсутствует в вашем mysql-connect, будет повторно использовать существующее соединение с теми же параметрами .Таким образом, у вас есть две переменные, но только одна связь.

Это означает, что вы просто перемещаете базу данных, используемую в этой связи.Префикс с именем db устранил проблему, так как MySQL разрешает межбазные манипуляции с одного и того же соединения, если он находится на одном и том же сервере db.

1 голос
/ 26 сентября 2011

Спасибо @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));

Это действительно странно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...