Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Gryzące się połączenia ?
Forum PHP.pl > Forum > PHP
MaestroS
Witam.
Mam klasę z funkcją do połączeń z trzeba bazami - zależnie od podanego identyfikatora:
  1. <?php
  2. public function connection($to) {
  3. switch($to) {
  4. case 0:
  5. $db = $this->account_database;
  6. break;
  7.  
  8. case 1:
  9. $db = $this->data_database;
  10. break;
  11.  
  12. case 2:
  13. $db = $this->forum_database;
  14. break;
  15.  
  16. default:
  17. die($to." ID doesn't exist and system couldn't select any database.");
  18. break;
  19. }
  20. $a_connect = mysql_pconnect($this->host, $this->user, $this->pass) or die("Cannot establish connection to the database.");
  21. $a_database = mysql_select_db($db, $a_connect) or die("Cannot select ".$db." database.");
  22. }
  23. ?>



Moje użycia baz wyglądają, ot tak:
Dla ID 1:
  1. <?php
  2. public function setting($name) {
  3. $this->connection(1);
  4. $_get = mysql_query("SELECT * FROM ".$this->format_name(1, "settings")." WHERE setting_name='".$name."'");
  5. $_fetch = mysql_fetch_assoc($_get);
  6. return $_fetch['setting_value'];
  7. }
  8. ?>


Dla ID 0:
  1. <?php
  2. public function restrict_email($email) {
  3. $this->connection(0);
  4. if (mysql_num_rows(mysql_query("SELECT * FROM ".$this->format_name(0, "emailset")." WHERE email='$email'"))>0) { return true; } else { return false; }
  5. }
  6. ?>


Dla ID 2:
  1. <?php
  2. public function phpbb_displayNews() {
  3. $this->connection(2);
  4. $getThreads = mysql_query("SELECT * FROM ".$this->setting('forum_prefix')."topics WHERE forum_id='".$this->setting("forum_newsid")."'") or die(mysql_error());
  5. while ($thread = mysql_fetch_assoc($getThreads))
  6. {
  7. echo '<a href="">'.$thread['topic_title'].'</a> by '.$this->getPosterName($thread['topic_poster']).'<BR>';
  8. }
  9. }
  10. ?>


Dlaczego przy użyciu polaczenia ID 2, mam:
Cytat
Table 'my.phpbb_topics' doesn't exist


?


Ach, ustawienia dodatkowe:
  1. <?php
  2. public $account_database = "account";  //Name of the accounts database
  3. public $account_table = "account";  //Table containing accounts
  4. public $_account_prefix = array("no", ""); //Prefix for table(s)
  5.  
  6. public $data_database = "my"; //Name of the datas database
  7. public $player_table = "users"; //Table containing players*
  8. public $_player_prefix = array("yes", "cq_"); //Are you using any prefix ?
  9.  
  10. public $forum_database = "phpbb";
  11. ?>
Kocurro
Łączysz się używając tego samego loginu, hasła i hosta - php traktuje to jako jedno połączenie.

Możesz użyć kilku kont z różnymiu loginami bądź użyć prefixowania nazwą bazy.

pozdr.
MaestroS
Prefixowania nazwą bazy ? tzn. ?
Kocurro
zamiast:

FROM `tabela`

robisz

FROM `baza`.`tabela`

pozdr.
MaestroS
To w takim wypadku, mysql_select_db() jest niepotrzebne ? Pytam, bo nigdy takiej metody nie stosowalem
Kocurro
mysql_select_db i tak musisz użyć ... smile.gif

pozdr.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.