Удалённая БД

Статус
В этой теме нельзя размещать новые ответы.

bork75

The Team
Регистрация
21 Июн 2008
Сообщения
1.455
Реакции
734
Заливаю данные в базу через 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
параметр $host - адрес удаленного сервера, $database - имя базы данных на сервере. там же все в комментариях написано)
напишите подробнее, свой сервер БД или от хостинговой компании?
 
В общем заработало так:

PHP:
$host='ip:3306'; // имя хоста

Это я и хотел услышать...

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

По поводу удалённого доступа, в панели isp там всё понятно, а на обычных виртуальных как открывать и проверять, есть проверочная команда?
 
  • Заблокирован
  • #4
проверять лучше телнетом со своего компа:
telnet ip 3306

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

Вложения

  • T4ePortPing.zip
    65,7 KB · Просмотры: 9
обычно порты не меняются, но есть случаи исключения когда порт переназначается... для этого лучше переписать класс с возможностью задания порта и прочих фичей..
вот простой пример взятый из класса для работы с СуБД

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 минуты
пример обращения
$db->server = '192.168.100.100';
$db->user = 'vasya';
$db->password = 'gfhjkbot';
$db->database = 'database_vasya';
$db->port = '3306';
$db->connect();
 
С портом всё понятно, а по удалённому доступу так и не разобрался.

Вот к примеру есть вирт. хост - свеб.
Собрал я на нём cms joomla.
И как задать в phpMyadmin удалённый доступ для этой бд ?
 
  • Заблокирован
  • #8
1) если вирт. хостинг sweb - там есть установка Joomla на автомате (в разделе "Установка приложений")
2) если так не хотите - создаете БД, задаете свой пароль и логин, копируете файлы джумлы, при установке прописываете адрес сервера БД: localhost, указываете пароль и логин, продолжаете установку
 
в папке 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'] = 'пароль'; 
?>
 
в папке phpmyadmin файл config.inc.php

Я же написал, что хостинг виртуальный.
Кто же мне даст править config.inc.php ? )))

Есть только вход в phpMyAdmin и всё.
Хостинг sweb например.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху