2013-07-22 1 views
2

Мне нужно вставить данные в таблицу двух разных баз данных. Я создал базу данных1 и таблицу1 для базы данных1, также я создал базу данных2 и таблицу2 для базы данных2.Как вставить данные в две разные таблицы двух разных баз данных в php

Для вставки данных я написал код,

$connect = mysql_connect("localhost","root",""); //database connection 

mysql_select_db("database1",$connect); // select database1 
mysql_select_db("database2",$connect); // select database2 

$sql = mysql_query("INSERT INTO database1.table1 (contact_first, contact_last, contact_email) VALUES('abc','xyz','[email protected]')"); //insert record to first table 
$sql1 =mysql_query("INSERT INTO database2.table2 (contact_first, contact_last, contact_email) VALUES('abc','xyz','[email protected]')"); //insert record to second table 

пожалуйста, предложите мне корректировки выше код для вставки данных. Спасибо!

+1

это может помочь вам [два db connition] (http://stackoverflow.com/questions/274892/how-do-you-connect-to-multiple-mysql-databases-on-a-single-webpage) –

ответ

2

Попробуйте следующий код:

$connect1 = mysql_connect("localhost","root",""); 
mysql_select_db("database1", $connect1); 
$res1 = mysql_query("query",$connect1); 

$connect2 = mysql_connect("localhost","root","",true); 
mysql_select_db("database2", $connect2); 
$res2 = mysql_query("query",$connect2); 

Примечание: Так mysql_connect имеет другой необязательный логический параметр, который указует, будет ли создана ссылка или нет. когда мы подключаемся к $ connect2 с этим необязательным параметром, установленным на 'true', поэтому обе ссылки будут оставаться в режиме реального времени.

+0

Спасибо, что работает !!!!!!!!! –

1

Просто подключитесь к 1 базе данных, вставьте новую строку, отсоедините, подключитесь к другой базе данных, вставьте строку в эту и отсоедините.

Или вы можете использовать $connect1 и $connect2, чтобы обратиться к каждому из них отдельно и выполнить вставку параллельно.

EDIT: Btw вы можете выбрать базу данных с 4'th параметром mysql_connect, нет необходимости использовать mysql_select_db

И очень важно, вы должны написать mysqli не mysql. Потому что функции mysql не будут поддерживаться намного дольше.

+0

Но у него есть 1 соединение, с двумя различными вариантами db. На самом деле это должно сработать так. – GFP

+0

@ zoran404 было бы более полезно, если бы вы добавили в качестве примера, взяв его код, кстати, хорошую технику –

+0

Он должен уметь писать код сам. – zoran404

0

сначала создать два соединения с базой данных

$connect1 = mysql_connect("localhost","root",""); 
$connect2 = mysql_connect("localhost","root",""); 

Затем выберите базу данных для каждого соединения.

mysql_select_db("database1",$connect1); // select database1 
mysql_select_db("database2",$connect2); // select database2 

Затем пройти во втором аргументе для mysql_query который является соответствующим соединением для запроса.

mysql_query("SELECT ... ", $connect1); 
mysql_query("SELECT ... ", $connect2); 
+0

Спасибо за ответ, что он работает после добавления $ connect2 = mysql_connect ("localhost", "root", "", true); –

0

Ну, если есть шаблон в БД имена, таблицы и запросы точно так же, вы можете использовать цикл:

for ($i = 1; $i <=2; $i++) { 
    mysql_select_db("database".$i, $connect); 
    $sql = mysql_query("INSERT INTO table".$i." (contact_first, contact_last, contact_email) VALUES('abc','xyz','[email protected]')"); 
    mysql_close; 
} 

Однако использование mysql_ * настоятельно не рекомендуется, так как он устарел от последней стабильной версии PHP и считается небезопасным. Вместо этого используйте PDO или MySQLi. Официальный сайт PHP предлагает статью «Выбор API»: http://www.php.net/manual/en/mysqlinfo.api.choosing.php

+0

Почему существует цикл только для двух баз данных только для подключения/вставки и закрытия, это не общее решение. –

+0

Если архитектура увеличивается, будет изменен только цикл. Что вы предлагаете в качестве решения, вручную создавайте каждый запрос? Я бы хотел, но если запросы будут точно такими же, я бы использовал цикл –

+0

Но подумайте, что никто не будет иметь имя базы данных, например '... 1, .. 2, .. 3 и так далее' –

0

Ну, вот как я это делаю ...

1 - подключение -> что вы делаете правильно 2 - Проверка на наличие ошибок 3 - Использование базы данных (1) Вы хотите поместить данные в (а не 'SELECT') 4 - Проверка на наличие ошибок 5 - теперь элементы INSERT в базу данных, которая используется - то есть (1) 6 - проверить на наличие ошибок 7 - ИСПОЛЬЗОВАТЬ другую базу данных (2) 8 - проверить наличие ошибок 9 - Вставить данные в (2) - потому что это тот, который используется сейчас 10 - проверить наличие ошибок

Да, быть параноидальным: P Надеюсь, это поможет