Скажите мне пожалуйста:
Как мне правильно подключиться к еще одной БД?
добавила еще одно подключение:
mssql_select_db("Base1");
mssql_select_db("KLADR");
теперь у меня запросы без указания базы не работают(((
SELECT * FROM dbo.tab1
только так:
SELECT * FROM Base1.dbo.tab1
это мне что весь код теперь исправлять??? другого выхода нет?
Спустя 2 минуты, 21 секунда (9.06.2010 - 12:57) waldicom написал(а):
Когда выполняется соединение к базе, необходимо запоминать ресурс, и использовать этот ресурс в функциях (обычно, как второй параметр)
Спустя 13 минут, 8 секунд (9.06.2010 - 13:10) zvezda_t написал(а):
извините, не поняла((
так сейчас уже поздно? я не смогу вторую БД подключить, не изменяя старый код?
так сейчас уже поздно? я не смогу вторую БД подключить, не изменяя старый код?
Спустя 12 минут, 44 секунды (9.06.2010 - 13:23) Basili4 написал(а):
Есть более прсотой вариант с помощью mssql_select_db подключится к одной базе а в запросах ко второй указывать имя базы.
Спустя 1 минута, 41 секунда (9.06.2010 - 13:24) agentor написал(а):
а разве так нельзя?
при построении запроса просто в запросе дополнительно пишем к какой базе подключатся..
в нашем варианте к $db1
$db1 = mssql_connect("строим соединение");
mssql_select_db('Base1',$db1);
$db2 = mssql_connect("строим соединение");
mssql_select_db('KLADR', $db2);
mssql_query("SELECT * FROM Base1", $db1);
при построении запроса просто в запросе дополнительно пишем к какой базе подключатся..
в нашем варианте к $db1
Спустя 7 минут, 35 секунд (9.06.2010 - 13:32) Basili4 написал(а):
agentor
Так можно. Но это надо весь старый код править.
Так можно. Но это надо весь старый код править.
Спустя 4 минуты, 17 секунд (9.06.2010 - 13:36) zvezda_t написал(а):
agentor в моём случае $db1 и $db2 это соединение с одним и тем же сервером, проблема именно в том чтобы явно не переписывать запросы с указанием базы
Цитата |
просто в запросе дополнительно пишем к какой базе подключатся |
в том то и дело что не просто - это мне миллион запросов сейчас переписывать((
Цитата |
в нашем варианте к $db1 |
это же не база - а соединение с сервером
Цитата |
Есть более прсотой вариант с помощью mssql_select_db подключится к одной базе а в запросах ко второй указывать имя базы. |
Basili4, да это для меня выход... а если название новой БД измениться, как это предусмотреть?
Спустя 6 минут, 37 секунд (9.06.2010 - 13:43) zvezda_t написал(а):
так, можно:
...
как грамотно?
DEFINE('DBKLADR',"KLADR");
...
mssql_query("SELECT * FROM ".DBKLADR.".dbo.kladr ");
как грамотно?
Спустя 5 минут, 25 секунд (9.06.2010 - 13:48) SlavaFr написал(а):
Цитата (zvezda_t @ 9.06.2010 - 10:36) |
в том то и дело что не просто - это мне миллион запросов сейчас переписывать(( |
да, начинай переписывать.
Спустя 34 минуты, 1 секунда (9.06.2010 - 14:22) zvezda_t написал(а):
немцы брысь!
русские не сдаются!
русские не сдаются!
Спустя 6 минут (9.06.2010 - 14:28) Basili4 написал(а):
Цитата (zvezda_t @ 9.06.2010 - 14:36) |
DEFINE('DBKLADR',"KLADR"); |
Вполне решение.
Спустя 3 часа, 17 минут, 13 секунд (9.06.2010 - 17:45) Nikitian написал(а):
$db1 и $db2 - это соединение с сервером бд, как вы правильно заметили, но если вы выбрали бд в рамках одного соединения, то в рамках именно этого соединения у вас и будет выбрана указанная база. Если у вас не вперемешку используются разные базы, то можно перед блоком в котором используется некоторая бд KLADR делать mssql_query('user KLADR'); (наверно в MS так же, как и в My идёт смена бд) либо mssql_select_db('KLADR'); либо, что правильнее, использовать 2 разных соединения, либо, что опять-таки вполне правильно: использовать везде префиксы, тогда вообще селект_дб можно не делать.
Спустя 2 часа, 55 минут, 19 секунд (9.06.2010 - 20:41) zvezda_t написал(а):
до этого момента всё поняла:
Цитата |
либо, что правильнее, использовать 2 разных соединения |
можно на примере? я что то запуталась((
Цитата |
либо, что опять-таки вполне правильно: использовать везде префиксы, тогда вообще селект_дб можно не делать. |
префиксы? как это?
Спустя 31 минута, 27 секунд (9.06.2010 - 21:12) Nikitian написал(а):
Цитата (zvezda_t @ 9.06.2010 - 17:41) | ||
до этого момента всё поняла:
можно на примере? я что то запуталась(( |
$link1=$link2=mssql_connect(....);
mssql_select_db('Base1',$link1);
mssql_select_db('KLADR',$link2);
Ну и далее в зависимости от того, в какую бд отправляются запросы, подставляете либо $link1, либо $link2:
mssql_query('select * from sometable1',$link1);
mssql_query('delete from sometable2',$link2);
Цитата (zvezda_t @ 9.06.2010 - 17:41) | ||
префиксы? как это? |
Префиксы: mssql_query('select * from Base1.sometable',$link);
Спустя 13 часов, 32 минуты, 54 секунды (10.06.2010 - 10:45) agentor написал(а):
дык я об этом и писал..
Спустя 58 минут, 5 секунд (10.06.2010 - 11:43) zvezda_t написал(а):
Цитата |
$link1=$link2=mssql_connect(....); mssql_select_db('Base1',$link1); mssql_select_db('KLADR',$link2); Ну и далее в зависимости от того, в какую бд отправляются запросы, подставляете либо $link1, либо $link2: mssql_query('select * from sometable1',$link1); mssql_query('delete from sometable2',$link2); |
Цитата |
дык я об этом и писал.. |
Вот именно! Если $link1=$link2, разве можно обойтись без префиксов?
эта запись :
mssql_select_db('Base1',$link1);
mssql_select_db('KLADR',$link2);
что ли устанавливает связь между соединением и БД??
в таком случае, мои извинения agentor, за непонимание...
Спустя 1 час, 1 минута, 38 секунд (10.06.2010 - 12:45) Nikitian написал(а):
Цитата |
mssql_select_db() sets the current active database on the server that's associated with the specified link identifier. |
Спустя 10 часов, 6 минут, 42 секунды (10.06.2010 - 22:51) tomash написал(а):
нужно перед каждым запросом к другой базе вызывать mssql_select_db(), т.к. эта функция не создает подключение, а устанавливает указаную БД как активную и использует ее по умолчанию! Ну или в запросе явно указывать базу. А в идеале сделать для каждой базы свой линк (ну это и без меня уже подсказали).
Спустя 9 часов, 36 минут, 56 секунд (11.06.2010 - 08:28) Basili4 написал(а):
На мой взгляд лучше всего указывать базу в запросе ведь может быть такой вариант когда в запросе требуются данные из двух баз
_____________
Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)