Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод из 2-х бд

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
4ik
Отправлено: 22 Декабря, 2011 - 00:35:21
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Вечер добрый.

Задача: добавить в уже имеющийся метод подключения к БД, такой же но второй, тем самым дать возможность подключатся к двум бд:
PHP:
скопировать код в буфер обмена
  1. $list = $db->fetch_array($result,'assoc');
  2. $list = $db2->fetch_array($result,'assoc');
  3.  


Сам метод:
config.php
PHP:
скопировать код в буфер обмена
  1. $server = 'localhost';
  2. $username = 'root';
  3. $password = '----';
  4. $database = 'test';



db_connect.php
PHP:
скопировать код в буфер обмена
  1.   $db = new database($server, $username, $password, $database);
  2.   $db->connect(database);
  3.  



class.database.php
PHP:
скопировать код в буфер обмена
  1. <?
  2.  
  3. define("database","");    
  4. class database {
  5.  
  6.     // mysql link identifier
  7.     var $link_ident = NULL;
  8.    
  9.     // debug mode
  10.     var $debug = true;
  11.    
  12.     // query counter
  13.     var $query_count = 0;
  14.    
  15.     var $login = array();
  16.    
  17.     var $last_id = NULL;
  18.    
  19.     var $default_error_message = 'Sorry, a internal error occured. Please go back an try it again.<br/><br/><a href="javascript:history.back(-1)">Back</a>';
  20.        
  21.     /*
  22.     ** database
  23.     ** database constructor
  24.     */
  25.        
  26.     function database(){        
  27.        
  28.         // parameter count:
  29.         $args = func_num_args();
  30.        
  31.         if ($args == 4) {
  32.             /*  
  33.                 set login data:
  34.                 host, username, password, database
  35.             */
  36.             $this->login = func_get_args();
  37.         }
  38.        
  39.     }
  40.    
  41.    
  42.     /*
  43.     ** set_login
  44.     ** set login data (host, username, password, database)
  45.     */
  46.        
  47.     function set_login(){        
  48.        
  49.         // parameter count:
  50.         $args = func_num_args();
  51.        
  52.         if ($args >= 3) {
  53.             /*  
  54.                 set login data:
  55.                 host, username, password, database
  56.             */
  57.             $this->login = func_get_args();
  58.         }
  59.        
  60.     }
  61.    
  62.    
  63.     /*
  64.     ** set_database
  65.     **
  66.     */
  67.        
  68.     function set_database($database){        
  69.         $this->login[3] = $database;        
  70.     }
  71.    
  72.    
  73.     /*
  74.     ** is_connected
  75.     **
  76.     */
  77.    
  78.     function is_connected(){        
  79.         return ($this->link_ident !== NULL);        
  80.     }
  81.    
  82.    
  83.     /*
  84.     ** error
  85.     **
  86.     */
  87.    
  88.     function error($msg){    
  89.    
  90.         $error = @mysql_error($this->link_ident);
  91.         $errno = @mysql_errno($this->link_ident);
  92.        
  93.         if ($this->debug){
  94.        
  95.             print '<div style="border: 1px solid red; padding: 1em; font-family: Verdana;">';        
  96.             print '<b>MySQL Database Error:</b><br/>';
  97.             print $msg;
  98.             print '<br/><br/><b>MySQL Error:</b> ' . $errno . ' ( ' . $error . ')<br/>\n';
  99.             print '</div>';    
  100.  
  101.         }
  102.         else {
  103.             print $this->default_error_message;            
  104.         }        
  105.         exit;    
  106.     }
  107.    
  108.    
  109.     /*
  110.     ** connect
  111.     ** Connect to the database server.
  112.     */
  113.    
  114.     function connect(){
  115.    
  116.         if ($this->is_connected()) {
  117.             // Connection is alread etablished
  118.             return true;
  119.         }
  120.            
  121.         if (count($this->login) != 4) {
  122.             $this->error('Did not found the login settings.');
  123.             return false;
  124.         }
  125.    
  126.         $this->link_ident = mysql_connect($this->login[0], $this->login[1], $this->login[2]);
  127.    
  128.         if (!$this->link_ident) {
  129.             $this->error('Could not connect to the database.');
  130.             return false;
  131.         }
  132.    
  133.         if (!@mysql_select_db($this->login[3], $this->link_ident)) {
  134.             $this->error('Could not select the database.');
  135.             return false;
  136.         }
  137.        
  138.         return true;        
  139.     }    
  140.  
  141.  
  142.     /*
  143.     ** get_query_cout
  144.     **
  145.     */
  146.    
  147.     function get_query_cout(){    
  148.         return $this->query_count;    
  149.     }
  150.    
  151.    
  152.     /*
  153.     ** simple_escape
  154.     **
  155.     */
  156.    
  157.     function simple_escape($str) {
  158.         if (function_exists('mysql_real_escape_string')) {
  159.             return @mysql_real_escape_string($str, $this->link_ident);
  160.         } else {
  161.             return @mysql_escape_string($str);
  162.         }
  163.     }
  164.    
  165.    
  166.     /*
  167.     ** insert_array
  168.     **
  169.     */
  170.    
  171.     function insert_array($table, $data_array){
  172.        
  173.         $row_keys = array();
  174.         $row_vals = array();
  175.        
  176.         // go trough all keys:
  177.         while (list($key, $val) = each($data_array)){
  178.        
  179.             // add key
  180.             $row_keys[] = "`$key`";
  181.            
  182.             // prepare and add value
  183.             if ($val == 'NOW()'){ $val = 'NOW()'; }
  184.             else if (!is_numeric($val)) { $val = '"'.$this->simple_escape($val).'"'; }
  185.            
  186.             $row_vals[] = $val;
  187.        
  188.         }
  189.        
  190.         // generate query string
  191.         $query_str = 'INSERT INTO ' . $table;
  192.         $query_str .= ' ('.implode(',', $row_keys).') ';
  193.         $query_str .= 'VALUES ('.implode(',', $row_vals).');';
  194.        
  195.         // exec. query:
  196.         return $this->query($query_str);
  197.    
  198.     }
  199.  
  200.  
  201.     /*
  202.     ** prepare_query
  203.     **
  204.     */
  205.        
  206.     function prepare_query(){        
  207.        
  208.         // parameter count:
  209.         $args = func_num_args();
  210.        
  211.         if ($args >= 1) {
  212.  
  213.             $args = func_get_args();
  214.            
  215.             $sql = $args[0];
  216.             unset($args[0]);
  217.            
  218.             return vsprintf($sql, $args);
  219.                        
  220.         }
  221.        
  222.         return '';
  223.        
  224.     }
  225.    
  226.    
  227.     /*
  228.     ** close
  229.     ** Close the database connection.
  230.     */
  231.    
  232.     function close(){        
  233.         if ($this->is_connected()) {
  234.             $r = @mysql_close($this->link_ident);
  235.             $this->link_ident = NULL;
  236.             return $r;
  237.         }        
  238.     }
  239.  
  240.  
  241.     /*
  242.     ** print_query
  243.     ** Print query
  244.     */      
  245.    
  246.     function print_query($query_string) {
  247.         print '<div style="border: 1px solid red; padding: 0em 1em; font-family: Verdana;"><pre>';
  248.         print_r($query_string);
  249.         print '</pre></div>';
  250.     }
  251.    
  252.    
  253.     /*
  254.     ** get_insert_id
  255.     **
  256.     */
  257.    
  258.     function get_insert_id(){        
  259.         return mysql_insert_id($this->link_ident);        
  260.     }
  261.    
  262.    
  263.     /*
  264.     ** debug_query
  265.     **
  266.     */
  267.    
  268.     function debug_query($query_string) {
  269.        
  270.         $r = $this->query($query_string);
  271.        
  272.         print '<table border="1" cellpadding="4" cellspacing="0" width="90%">';
  273.         print '<tr style="background-color: #FDFAB6;"><td><b>SQL Query:</b><br/>';
  274.         print htmlentities($query_string);        
  275.         print '</td></tr>';        
  276.         print '</table><br/>';        
  277.  
  278.         print '<table border="1" cellpadding="4" cellspacing="0" width="90%">';
  279.        
  280.         $first_row = $this->fetch_array($r);
  281.        
  282.         if ($first_row){
  283.            
  284.             $keys = array_keys($first_row);
  285.            
  286.             print '<tr style="background-color: #FDFAB6; text-align: left;">';
  287.             for ($x=0; $x < count($keys); $x++){
  288.                 print '<th>'.$keys[$x].'</th>';
  289.             }
  290.             print '</tr>';
  291.            
  292.             $x = 0;
  293.             while ($row = $this->fetch_array($r)){
  294.                 print '<tr style="background-color: '.(($x % 2) ? '#FFFFFF' : '#EEEEEE').';">';        
  295.                 while(list($name, $value) = each($row)){
  296.                     print ($value != '') ? '<td>'.htmlentities($value).'</td>' : '<td>&nbsp;</td>';
  297.                 }
  298.                 print "</tr>\n";
  299.                 $x++;
  300.             }        
  301.             print '</table>';            
  302.         }
  303.         else {
  304.        
  305.             print '<tr><td>No rows found!</td></tr>';
  306.        
  307.         }
  308.     }
  309.    
  310.    
  311.     /*
  312.     ** query
  313.     **
  314.     */
  315.    
  316.     function query($query_string) {
  317.    
  318.         // Connect to the database if we are
  319.         // not already connected
  320.         $this->connect();
  321.    
  322.         $query_string = trim($query_string);
  323.         if (empty($query_string) or $query_string == '') {
  324.             return false;
  325.         }
  326.        
  327.         // Check if we are connected to the database
  328.         if (!$this->is_connected()) {        
  329.             $this->error('No database connection found.');
  330.             return false;
  331.         }
  332.    
  333.         // Execute the query:
  334.         $q_id = @mysql_query($query_string, $this->link_ident);
  335.         // Update query count
  336.         $this->query_count++;
  337.    
  338.         // If a empty result is given
  339.         if (!$q_id) {
  340.             $this->error('The database returned a invalid result.');
  341.             return false;
  342.         }
  343.                
  344.         return $q_id;
  345.                  
  346.     }
  347.    
  348.  
  349.     /*
  350.     ** query_fetch
  351.     **
  352.     */
  353.    
  354.     function &query_fetch($query_string){
  355.    
  356.         $query_handle = $this->query($query_string);
  357.        
  358.         if ($this->num_rows($query_handle) == 0){
  359.             return array();
  360.         }
  361.         else {
  362.             return $this->fetch_array($query_handle);
  363.         }
  364.    
  365.     }
  366.    
  367.    
  368.     /*
  369.     ** query_single_result
  370.     **
  371.     */
  372.    
  373.     function query_single_result($query_string){
  374.    
  375.         $query_handle = $this->query($query_string);
  376.        
  377.         if ($this->num_rows($query_handle) == 0){
  378.             return '';
  379.         }
  380.         else {
  381.             $result = $this->fetch_array($query_handle, 'num');
  382.             return isset($result[0]) ? $result[0] : '';
  383.         }
  384.    
  385.     }
  386.    
  387.    
  388.     /*
  389.     ** count_rows
  390.     **
  391.     */
  392.    
  393.     function count_rows($query_string){
  394.    
  395.         $query_handle = $this->query($query_string);
  396.        
  397.         if (!$this->num_rows($query_handle)){            
  398.             return 0;
  399.         }
  400.         else {
  401.             $row = $this->fetch_array($query_handle);
  402.             return isset($row[0]) ? $row[0] : 0;
  403.         }
  404.     }
  405.    
  406.    
  407.     /*
  408.     ** num_rows
  409.     **
  410.     */
  411.    
  412.     function num_rows($r){
  413.         return @mysql_num_rows($r);
  414.     }
  415.    
  416.    
  417.     /*
  418.     ** num_cols
  419.     **
  420.     */
  421.    
  422.     function num_cols($r){
  423.         return @mysql_num_fields($r);
  424.     }
  425.  
  426.  
  427.     /*
  428.     ** table_size
  429.     ** returns something like: 484.2 KB
  430.     */
  431.    
  432.     function table_size($table_name, $database=NULL) {
  433.    
  434.         if ($database === NULL){
  435.             $database = isset($this->login[3]) ? $this->login[3] : '';
  436.         }
  437.        
  438.         if ($database == ''){
  439.             $this->error('No database given.');
  440.         }
  441.    
  442.         $this->connect();
  443.                
  444.         $r = $this->query("SHOW TABLE STATUS FROM ".$database." LIKE '".$table_name."'", $this->link_ident);                        
  445.         $size = intval($this->result($r, 0, 'Index_length')) + intval($this->result($r, 0, 'Data_length'));        
  446.  
  447.         return $this->nice_date($size);
  448.     }
  449.    
  450.    
  451.     /*
  452.     ** nice_date
  453.     ** returns something like: 484.2 KB
  454.     */
  455.    
  456.     function nice_date($size){
  457.         $units = array(' B', ' KB', ' MB', ' GB', ' TB');
  458.         for ($i = 0; $size > 1024; $i++) { $size /= 1024; }
  459.         return round($size, 2).$units[$i];
  460.     }
  461.  
  462.  
  463.     /*
  464.     ** database_size
  465.     ** returns something like: 484.2 KB
  466.     */
  467.    
  468.     function database_size($database) {
  469.    
  470.         $this->connect();
  471.        
  472.         $tables = mysql_list_tables($database, $this->link_ident);        
  473.         if (!$tables) { return -1; }
  474.        
  475.         $table_count = mysql_num_rows($tables);
  476.         $size = 0;
  477.        
  478.         for ($i=0; $i < $table_count; $i++) {        
  479.             $table_name = mysql_tablename($tables, $i);            
  480.             $r = $this->query("SHOW TABLE STATUS FROM ".$database." LIKE '".$table_name."'", $this->link_ident);                        
  481.             $size += intval($this->result($r, 0, 'Index_length')) + intval($this->result($r, 0, 'Data_length'));        
  482.         }        
  483.        
  484.         return $this->nice_date($size);
  485.     }
  486.    
  487.    
  488.     /*
  489.     ** affected_rows
  490.     **
  491.     */
  492.    
  493.     function &affected_rows(){
  494.         return @mysql_affected_rows($this->link_ident);
  495.     }
  496.    
  497.    
  498.     /*
  499.     ** fetch_object
  500.     **
  501.     */
  502.    
  503.     function &fetch_object($handle) {            
  504.         return @mysql_fetch_object($handle);  
  505.     }
  506.    
  507.    
  508.     /*
  509.     ** fetch_array
  510.     **
  511.     */
  512.    
  513.     function &fetch_array($handle, $type = 'assoc') {
  514.  
  515.         if ($type == 'assoc'){ $result_type = MYSQL_ASSOC; }
  516.         else if ($type == 'num'){ $result_type = MYSQL_NUM; }
  517.                 else if ($type == 'row'){ $result_type = MYSQL_ROW; }
  518.         else { $result_type = MYSQL_BOTH; }
  519.                 //I hate this :)
  520.         $return = @mysql_fetch_array($handle, $result_type);  
  521.         return $return;  
  522.     }
  523.      
  524.             function &fetch_row($handle) {
  525.         $return = @mysql_fetch_row($handle);
  526.         return $return;  
  527.     }
  528.    
  529.     /*
  530.     ** free
  531.     ** Deletes the results and frees the memory
  532.     */
  533.    
  534.     function free($result){
  535.         return @mysql_free_result($result);
  536.     }
  537.    
  538.        
  539.     // end of class
  540.  
  541. }
  542.  
  543. ?>


Поклон



----------------------
Cсылка на файлы
----------------------

(Отредактировано автором: 22 Декабря, 2011 - 02:52:10)

 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Декабря, 2011 - 00:44:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




PHP:
скопировать код в буфер обмена
  1. $db = new database($server, $username, $password, $database);
  2. $db->connect("database");
  3. $db2 = new database($server2, $username2, $password2, $database2);
  4. $db2->connect("database2");

Не оно?
 
 Top
4ik
Отправлено: 22 Декабря, 2011 - 00:57:48
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Добавил в config.php
PHP:
скопировать код в буфер обмена
  1. $server2 = 'localhost';
  2. $username2 = 'root';
  3. $password2 = '----';
  4. $database2 = 'test2';


В db_connect.php
PHP:
скопировать код в буфер обмена
  1. $db2 = new database($server2, $username2, $password2, $database2);
  2. $db2->connect("database2");



Получил вот такую ошибку:

PHP:
скопировать код в буфер обмена
  1. SQL Database Error:
  2. The database returned a invalid result.
  3.  
  4. MySQL Error: 1146 ( Table 'test2.views' doesn't exist)
  5. \n


(таблица "views" находится в первой БД)

(Отредактировано автором: 22 Декабря, 2011 - 01:04:43)

 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Декабря, 2011 - 01:42:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




4ik пишет:
Table 'test2.views' doesn't exist
Таблица views не существует в базе test2.
4ik пишет:
таблица "views" находится в первой БД
Ну и?
 
 Top
4ik
Отправлено: 22 Декабря, 2011 - 02:18:45
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. $sql = $db->query("UPDATE  gameplayers SET views=views+1 WHERE name='$user' LIMIT 1");

так запрос к первой бд (в которой есть views).
 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Декабря, 2011 - 02:27:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




А вот хз...
1) Метод connect нужно вызывать без параметров.
2) класс старый, писан под пых 4, надо бы перекопать.
 
 Top
4ik
Отправлено: 22 Декабря, 2011 - 02:36:57
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




сам я не в силах ето реализовать - решил спросить у Вас Ниндзя

(Отредактировано автором: 23 Декабря, 2011 - 15:05:03)

 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Декабря, 2011 - 02:40:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Приаттачте файл в тему. Отпишусь к 8-ми утра Закатив глазки
 
 Top
4ik
Отправлено: 22 Декабря, 2011 - 02:53:03
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




DeepVarvar пишет:
Приаттачте файл в тему

зделал.
 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Декабря, 2011 - 06:22:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




http://rghost[dot]net/download/35536[dot][dot][dot][dot]database[dot]tar[dot]gz
В классе отсутствует метод result. Но, то что я обещал - исправлено.
(Добавление)
Вобщем, доработать класс вы не сможете - выкиньте его и ищите другой.
Где вы его только скачали...
 
 Top
4ik
Отправлено: 22 Декабря, 2011 - 23:08:56
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




DeepVarvar, я наберусь наглости, и попрошу:
может у Вас имеется какая то уже готовая заготовка класса / подключения к бд, я бы не обиделся если бы вы поделились Ниндзя
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB