Удалённая БД

Тема в разделе "Базы данных", создана пользователем bork75, 19 авг 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. bork75

    bork75 Д☼брая собака )

    Регистр.:
    21 июн 2008
    Сообщения:
    1.449
    Симпатии:
    716
    Заливаю данные в базу через php скрипт

    PHP:
     <?php

    $host
    ='localhost'// имя хоста 
    $database='name'// имя базы данных
    $user='root'//  имя пользователя
    $pswd='1111'// заданный пароль
     
    $dbh mysql_connect($host$user$pswd) or die("Не могу соединиться с MySQL.");
    mysql_select_db($database) or die("Не могу подключиться к базе.");
    // создание БД
            
    $query "CREATE TABLE ....
    Как использовать этот скрипт для удалённой базы?
     
  2. blizz123

    blizz123 Читатель

    Заблокирован
    Регистр.:
    25 апр 2010
    Сообщения:
    99
    Симпатии:
    17
    параметр $host - адрес удаленного сервера, $database - имя базы данных на сервере. там же все в комментариях написано)
    напишите подробнее, свой сервер БД или от хостинговой компании?
     
  3. bork75

    bork75 Д☼брая собака )

    Регистр.:
    21 июн 2008
    Сообщения:
    1.449
    Симпатии:
    716
    В общем заработало так:

    PHP:
    $host='ip:3306'// имя хоста 
    Это я и хотел услышать...

    А вообще у всех этот номер порта одинаковый, как его проверять?

    По поводу удалённого доступа, в панели isp там всё понятно, а на обычных виртуальных как открывать и проверять, есть проверочная команда?
     
  4. blizz123

    blizz123 Читатель

    Заблокирован
    Регистр.:
    25 апр 2010
    Сообщения:
    99
    Симпатии:
    17
    проверять лучше телнетом со своего компа:
    telnet ip 3306

    этот номер порта "по умолчанию", может быть другим, но редко
     
    bork75 нравится это.
  5. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    софт для пинга портов во вложении
     

    Вложения:

    • T4ePortPing.zip
      Размер файла:
      65,7 КБ
      Просмотров:
      9
    bork75 нравится это.
  6. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    обычно порты не меняются, но есть случаи исключения когда порт переназначается... для этого лучше переписать класс с возможностью задания порта и прочих фичей..
    вот простой пример взятый из класса для работы с СуБД

    PHP:

    <?php

    /**
     * $Revision: 132 $
     * $Author: CrashX $
     * $Date: 2010-02-02 14:27:01 +0600 (Вт, 02 фев 2010)$
     * $LastChangedDate: 2010-08-19 14:33:27 +0700 (Чт, 19 авг 2010) $
     * $Id: mysqli.php 132 2010-08-19 07:33:27Z CrashX $
     * Copyright © CrashX <XSiteCMS@gmail.com>
     * Всі права захищено © CrashX
     */
    if (!defined('_SHELL'))
      die();

    /**
     * MySQLi
     */
    class DriverDB {

    // версия класса
      
    var $version 0.01;
      var 
    $driver 'MySQLi';
    // статус и id соединения
      
    var $connected false;
    // настройки сервера
      
    var $server 'localhost';
      var 
    $user 'root';
      var 
    $password null;
      var 
    $database null;
      var 
    $port '3306';
      var 
    $persistent false;
    // кодовая страница
      
    var $collate 'utf8';
    // текст запроса
      
    var $query null;
    // описание запроса
      
    var $info null;
    // время запроса
      
    var $timer null;
    // id запроса для освобождения памяти по указателю
      
    var $id null;
    // id последнего insert
      
    var $last null;
    // версионность
      
    var $mysql null;
      var 
    $compatibility '4.0';
    // статистика
    // ведение журнала
      
    var $logging true;
    // освобожднеие памяти после выполнения запроса
      
    var $free true;
      var 
    $log = array(array('info' => '''query' => '''error' => '''time' => ''));
    // кол-во запросов
      
    var $counter 0;

      function 
    __construct() {
        
    $this->db();
      }

      
    /**
       * Конфигурация соединения
       *
       */
      
    function db() {
        if (!
    defined('DB_SERVER'))
          
    $this->server 'localhost'; else
          
    $this->server DB_SERVER;
        if (!
    defined('DB_USER'))
          
    $this->user 'root'; else
          
    $this->user DB_USER;
        if (!
    defined('DB_PASSWORD'))
          
    $this->password null; else
          
    $this->password DB_PASSWORD;
        if (!
    defined('DB_DATABASE'))
          
    $this->database null; else
          
    $this->database DB_DATABASE;
        if (!
    defined('DB_PORT'))
          
    $this->port 3306; else
          
    $this->port DB_PORT;
      }

      
    /**
       * Подключение к указанной СуБД
       */
      
    function connect() {
        global 
    $engine;
        
    $this->timer $engine->debug->dbtime('on');
        if (!
    $this->connected):
          
    //$this->connected = mysqli_init();
          
    $this->connected = @mysqli_connect($this->server$this->user$this->password$this->database$this->port);
        endif;
        if (
    $this->connected):
          
    $this->mysql mysqli_get_server_info($this->connected);
          if (
    version_compare($this->mysql$this->compatibility">=")):
            
    $this->query "/* !40101 SET NAMES '" $this->collate "' */";
          else:
            
    $this->query "SET NAMES '" $this->collate "'";
          endif;
          
    $this->info "db->connect(" $this->database ")";
          
    $this->query();
        else:
          die(
    "Not connect server ! Нет соединения с базой данных: <b>" $this->database "</b> !");
        endif;
      }

          function 
    __destruct() {
            
    //Disconnect
        
    $this->disconnect();
        }

      
    /**
       * Enter description here...
       *
       */
      
    function disconnect() {
        global 
    $engine;
        
    $this->timer $engine->debug->dbtime('off');
        if (
    $this->connected):
          
    $this->free();
          @
    mysqli_close($this->connected);
          
    $this->connected null;
          
    $this->database '';
        endif;
        @
    mysqli_close();
      }

      static function 
    table(&$fields$key$prefix) {
        
    $fields $prefix '.' $fields;
      }

      
    /**
       * Возвращает ID, сгенерированный при последнем INSERT-запросе
       */
      
    function last() {
        
    $this->last mysqli_insert_id($this->connected);
      }

      
    /**
       * Выполняет запросы и возвращает указатель на данные
       */
      
    function query() {
        global 
    $engine;
        
    $this->free $this->free() : $this->id null;
        
    $this->timer '';
        if (
    $this->query != ""):
          
    $this->id mysqli_query($this->connected$this->query);
          
    //$this->id=mysqli_multi_query($this->connected,$this->query);
          
    $this->last();
          
    $this->counter++;
        else:
          return 
    false;
        endif;
        if (
    $this->logging):
          
    $this->log();
        endif;
        
    $this->info null;
        
    $this->query null;
        if (!
    $this->id):
          
    $engine->debug->error 'DEFAULT';
          
    $engine->debug->dump();
          return 
    false;
        endif;
        return 
    true;
      }

      
    /**
       * Enter description here...
       */
      
    function free() {
        while (
    mysqli_more_results($this->connected)):
          if (
    mysqli_next_result($this->connected)) :
            
    $this->id mysqli_use_result($this->connected);
            @
    mysqli_free_result($this->id);
          endif;
        endwhile;
        
    $this->id null;
        
    $this->log = array();
        
    $this->log null;
      }

      
    /**
       * Ведение журнала запросов текущего пользователя
       */
      
    function log() {
        
    $this->log[$this->counter 1]['info'] = $this->info;
        
    $this->log[$this->counter 1]['query'] = $this->query;
        @
    $this->log[$this->counter 1]['error'] = mysqli_errno($this->connected) . ':' mysqli_error($this->connected);
        @
    $this->log[$this->counter 1]['time'] = date('d.m.Y H:i');
      }

      
    /**
       * Возвращение результата в виде массива
       * @param  MYSQL_ASSOC, MYSQL_NUM, MYSQL_BOTH
       * @return  mixed результат
       */
      
    function result($type=MYSQL_ASSOC) {
        return @
    mysqli_fetch_array($this->id$type);
      }

      
    /**
       * Возвращает количество рядов результата запроса
       * @return  mixed результат
       */
      
    function rows() {
        return @
    mysqli_num_rows($this->id);
      }

      
    /**
       * Создание текста запроса для выборки записи
       * @param поля в виде ассоциативного массива
       * @param таблица имя
       * @param критерии в виде ассоциативного массива
       * @param доплительные части запроса или директивы
       * @return mixed
       */
      
    function select($fields=array(), $table=null$criteria=array(), $directive=null) {
    // SELECT *ПОЛЯ* FROM *ТАБЛИЦА* WHERE *УСЛОВИЯ* *ДИРЕКТИВЫ*
        
    $fields implode(", "array_keys($fields));
        if (
    is_array($criteria)):
          
    $wheres = array();
          foreach (
    $criteria as $column => $value):
            
    $wheres[] = "{$column}='{$value}'";
          endforeach;
          
    $wheres implode(" AND "$wheres);
        endif;
        
    $this->query.="SELECT {$fields}";

        if (!empty(
    $table)):
          
    $this->query.=" FROM {$table}";
        endif;
        if (!empty(
    $wheres)):
          
    $this->query.=" WHERE {$wheres}";
        endif;
        
    $this->query.={$directive}";
        
    $this->query.=";";
        return 
    true;
      }

      
    /**
       * Создание текста запроса для добавления записи
       * @param поля в виде ассоциативного массива
       * @param таблица имя
       */
      
    function insert($fields=array(), $table=null) {
    // INSERT INTO *ТАБЛИЦА* *ПОЛЯ* VALUES *ЗНАЧЕНИЯ*
        
    $values = array();
        foreach (
    $fields as $field):
          
    $values[] = "'{$field}'";
        endforeach;
        
    $columns array_keys($fields);
        
    $this->query.="INSERT INTO {$table} (" implode(", "$columns) . ")";
        
    $this->query.=" VALUES (" implode(", "$values) . ")";
        
    $this->query.=";";
        return 
    true;
      }

      
    /**
       * Создание текста запроса для обновления записи
       * @param поля в виде ассоциативного массива
       * @param таблица имя
       * @param критерии в виде ассоциативного массива
       * @return mixed
       */
      
    function update($fields$table$criteria) {
    // UPDATE *ТАБЛИЦА* SET *ПОЛЯ* WHERE *УСЛОВИЯ*
        
    $wheres = array();
        
    $updates = array();
        foreach (
    $fields as $column => $value):
          
    $updates[] = "{$column}='{$value}'";
        endforeach;
        
    $update implode(", "$updates);
        foreach (
    $criteria as $column => $value):
          
    $wheres[] = "{$column}='{$value}'";
        endforeach;
        
    $where implode(" AND "$wheres);
        
    $this->query.="UPDATE {$table}";
        
    $this->query.=" SET {$update}";
        
    $this->query.=" WHERE {$where}";
        
    $this->query.=";";
        return 
    true;
      }

      
    /**
       * Создание текста запроса для удаления записи
       * @param таблица имя
       * @param критерии в виде ассоциативного массива
       * @return mixed
       */
      
    function delete($table$criteria) {
    // DELETE *?!ПОЛЯ!?* FROM *ТАБЛИЦА* WHERE *УСЛОВИЯ*
        
    $wheres = array();
        foreach (
    $criteria as $column => $value):
          
    $wheres[] = "{$column}='{$value}'";
        endforeach;
        
    $where implode(" AND "$wheres);
        
    $this->query.="DELETE FROM {$table}";
        
    $this->query.=" WHERE {$where}";
        
    $this->query.=";";
        return 
    true;
      }

      function 
    procedure($fields$procedure$result='@result') {
    //CALL *ИМЯ ПРОЦЕДУРЫ* (*ЗНАЧЕНИЯ*,*РЕЗУЛЬТАТ*)
        
    $values = array();
        foreach (
    $fields as $field):
          
    $values[] = "'{$field}'";
        endforeach;
        
    $columns array_keys($fields);
        if (
    $result && !empty($result))
          
    $result ',' $result;
        
    $this->query "CALL " $procedure "(" implode(", "$values) . $result ");";
      }

    }
    ?>

    Добавлено через 2 минуты
    пример обращения
     
    bork75 нравится это.
  7. bork75

    bork75 Д☼брая собака )

    Регистр.:
    21 июн 2008
    Сообщения:
    1.449
    Симпатии:
    716
    С портом всё понятно, а по удалённому доступу так и не разобрался.

    Вот к примеру есть вирт. хост - свеб.
    Собрал я на нём cms joomla.
    И как задать в phpMyadmin удалённый доступ для этой бд ?
     
  8. blizz123

    blizz123 Читатель

    Заблокирован
    Регистр.:
    25 апр 2010
    Сообщения:
    99
    Симпатии:
    17
    1) если вирт. хостинг sweb - там есть установка Joomla на автомате (в разделе "Установка приложений")
    2) если так не хотите - создаете БД, задаете свой пароль и логин, копируете файлы джумлы, при установке прописываете адрес сервера БД: localhost, указываете пароль и логин, продолжаете установку
     
  9. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    в папке phpmyadmin файл config.inc.php
    PHP:
    <?php
      $i 
    0;
      
    $i++;
      
    $cfg['Servers'][$i]['host'] = 'localhost';
      
    $cfg['Servers'][$i]['extension'] = 'mysqli';
      
    $cfg['Servers'][$i]['connect_type'] = 'tcp';
      
    $cfg['Servers'][$i]['compress'] = false;
      
    $cfg['Servers'][$i]['auth_type'] = 'config';
      
    $cfg['Servers'][$i]['user'] = 'root';
      
    $cfg['Servers'][$i]['password'] = 'пароль'
    ?>
     
    bork75 нравится это.
  10. bork75

    bork75 Д☼брая собака )

    Регистр.:
    21 июн 2008
    Сообщения:
    1.449
    Симпатии:
    716
    Я же написал, что хостинг виртуальный.
    Кто же мне даст править config.inc.php ? )))

    Есть только вход в phpMyAdmin и всё.
    Хостинг sweb например.
     
Статус темы:
Закрыта.