Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Połączenie do dwóch baz
Chmarus
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 17.09.2009

Ostrzeżenie: (0%)
-----


Witam serdecznie. Mam pewien problem z połączeniem do dwóch różnych baz w jednym skrypcie. Posiadam dwie bazy mysql: 1sza jest na potrzeby portalu, a druga jest na potrzeby forum. Na portalu chciałbym wyświetlać 5 ostatnich tematów z forum, które pobieram za pomocą mysql_fetch_array właśnie z tej drugiej bazy (forum). Sam skrypt do wyciągania ostatnich tematów działa doskonale.

Problem pojawia się dopiero po zaincludowaniu pliku w skrypcie portalu (portal zbudowany przy uzyciu php/mysql/smarty) w nagłówku wywala coś takiego:
Cytat
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\portal\class\x.db.class.php on line 100


To pewnie przez to, że includuje plik, który także łączy się z kompletnie inną bazą danych.

Oto kod pliku, który includuje:

  1. <?php
  2. $connection = @mysql_connect('localhost', 'user', 'haslo') or die('Brak połączenia z serwerem MySQL.');
  3. $bazaforum = @mysql_select_db('baza', $connection) or die('Błąd wyboru bazy danych.');
  4. $result = mysql_query("SET NAMES utf8");
  5. $q = mysql_query("SELECT ibf_topics.tid, ibf_topics.title, ibf_topics.posts, ibf_topics.starter_name, ibf_topics.topic_firstpost, ibf_forums.name FROM ibf_topics LEFT JOIN ibf_forums ON ibf_topics.forum_id=ibf_forums.id ORDER BY tid DESC LIMIT 5");
  6.  
  7. while($forum = mysql_fetch_assoc($q)) {
  8. echo "<b>[".$forum['name']."]</b> <a href='http://localhost/forum/topic/".$forum['tid']."-temat/#entry".$forum['topic_firstpost']."'>".$forum['title']."</a> Autor: ".$forum['starter_name']."<br>";
  9. }
  10. ?>


Proszę o pomoc i pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Pytanie najważniejsze... Czy połączenie jest to samo , bo to najważniejsze. To samo połączenie, to znaczy mające tego samego hosta, usera i password.
Jeśli tak, to masz problem z głowy. Wystarczy pomiędzy zapytaniami robić mysql_select_db i zmieniać bazy.

Sytuacja się komplikuje nieco, gdy bazy są na innych hostach lub odwołujesz się do tego samego hosta ale różnymi userami. Należy bowiem wtedy przechowywać dwa identyfikatory połączeń. Robisz więc wtedy 2 lub więcej zmiennych przechowujących identyfikatory połączeń i w zalezności od tego do jakiej bazy robisz zapytanie, taki identyfikator posyłasz jako DRUGI, parametr funkcji mysql_query.
Masz wtedy więc przykładową składnię taką:
  1. $id_polaczenia01 = mysql_connect( $host01, $user01, $passw01);
  2. $id_polaczenia02 = mysql_connect( $host02, $user02, $passw02);
  3. $res01 = mysql_query($sql, $id_polaczenia01);
  4. $res02 = mysql_query($sql, $id_polaczenia02);
Pierwsze zapytanie poleci do 1 bazy, a drugie do drugiej.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 19:15