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 :: автоматический выбор базы

 PHP.SU

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


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

> Описание: Как организовать автоматический выбор базы
stalkerdj
Отправлено: 11 Апреля, 2015 - 00:29:13
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Авг. 2014  


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




Добрый день помогите с проблемой.
Нужно организовать так чтобы при получение post запроса имя базы соответствовала с переменной "hostname"
Пример устройство с именем esp1 передает данные на этот скрипт а скрипт выбирает базу соответствующую имени устройста то есть базу esp1 за место базы dubmon
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. define ("MYSQL_HOST"    ,'localhost');
  4. define ("MYSQL_LOGIN"   ,'user');
  5. define ("MYSQL_PASSWORD",'pass');
  6. define ("MYSQL_DATABASE",'dubmon');
  7.  
  8. @mysql_connect(MYSQL_HOST, MYSQL_LOGIN, MYSQL_PASSWORD)
  9. or die("Connect SQL error!");
  10.  
  11. $db_name = MYSQL_DATABASE;
  12.  
  13. @mysql_select_db($db_name) or die("Select DB error!");
  14.  
  15. /**
  16.  * Create Table Query by tableName
  17.  * @param string $tableName Table name
  18.  * @return string
  19.  */
  20. function GetCreateTableQuery($tableName)
  21. {
  22.    $create_table = <<<LABEL
  23. CREATE TABLE `$tableName`
  24. (`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
  25. `value` DOUBLE NOT NULL ,
  26. `date` DATETIME NOT NULL ,
  27. PRIMARY KEY ( `id` ) ,
  28. UNIQUE (
  29. `id`
  30. )) ENGINE = MYISAM;
  31. LABEL;
  32.  
  33.    return $create_table;
  34. }
  35.  
  36. /**
  37.  * Simple validation
  38.  * @param mixed $paramValue input parameter
  39.  * @return bool
  40.  */
  41. function IsValidValue($paramValue)
  42. {
  43.    if (empty($paramValue))
  44.       return false;
  45.    
  46.    return true;
  47. }
  48.  
  49. /**
  50.  * Проверка параметров на соответствие с ожидаемыми параметрами
  51.  * Чтобы не заздавать ненужных таблиц
  52.  * @param string $key Param key
  53.  * @return bool
  54.  */
  55. function IsValidKey($key)
  56. {
  57.    $arrayKey = array("hostname", "idesp", "dhtt1", "dhth1", "dhtt2", "dhth2", "bmpt", "bmpp", "light");
  58.    
  59.    if (in_array($key, $arrayKey))
  60.       return true;
  61.    
  62.    if (preg_match('/^dsw\d/',$key))
  63.       return true;
  64.    
  65.    return false;
  66. }
  67.  
  68. foreach(array_keys($_REQUEST) as $key)
  69. {
  70.    if (!IsValidKey($key))
  71.    {
  72.       // название параметра не прошло проверку: переходим к следующему параметру
  73.       echo "Key: " . $key . " not valid<br />";
  74.       continue;
  75.    }
  76.    
  77.    $value = $_REQUEST[$key];
  78.    if (!IsValidValue($value))
  79.    {
  80.       // Пустое значение. При вставке в таблицу произойдет ошибка т.к. поле в таблице NOT NULL
  81.       // переходим к следующему сенсору
  82.       echo "Ошибка: Значение " . $key . "пустое!<br />";
  83.       continue;
  84.    }
  85.    
  86.    // формируем запрос к бд на вставку записи в таблицу
  87.    $sql="INSERT INTO `". $key . "` (`id`, `value`,`date`) VALUES (NULL,'" . $value . "', NOW());";
  88.    echo $sql . "<br />";
  89.    
  90.    if($result = mysql_query($sql) === false)
  91.    {
  92.       $create_table = GetCreateTableQuery($key);
  93.       if($result = mysql_query($create_table) === false)
  94.       {
  95.          die("CREATE TABLE ERROR! - " . $key);
  96.       }
  97.       else mysql_query($sql);
  98.    }
  99. }
  100.  
  101.  
  102. ?>
  103.  

Зарание благодарб за помощь

(Отредактировано автором: 11 Апреля, 2015 - 00:30:12)

 
 Top
exlant
Отправлено: 11 Апреля, 2015 - 01:07:10
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


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




если в POST запросе есть переменная hostname, то база данных будет соответствовать ее значению, если нет бд будет - dubmon
PHP:
скопировать код в буфер обмена
  1. $db = filter_input(INPUT_POST, 'hostname', FILTER_SANITIZE_MAGIC_QUOTES);
  2.     if(!$db){
  3.        $db = 'dubmon';
  4.     }
  5. define ("MYSQL_DATABASE",$db);

Это исходя из вашего кода, ничего не переделывая!
 
 Top
stalkerdj
Отправлено: 11 Апреля, 2015 - 12:23:09
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Авг. 2014  


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




exlant Спасибо за помощь все прекрасно работает
 
 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