Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к MySQL через PHPmyadmin Android, доступ Android устройств к БД MySQL 
V
    Опции темы
Rodeon
Дата 6.5.2020, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 28.8.2008
Где: Россия, Ухта

Репутация: нет
Всего: нет



Опишу ситуацию.

Решил попробовать реализовать удаленной доступ к БД MySQL.
Арендовал хостинг с MySQL и MyPHP.
Создал БД. таблицу, добавил временно весь спектр IP адресов, чтобы мог подключаться к БД напрямую с ПК.
настроил связь с ПК - все работает.

Встал вопрос о работоспособности Android устройств.
Почитал форумы - пишут что лучше реализовывать через PHP запросы - myphpadmin.
тем самым не будет root доступа к базе клиентов, работа на большинстве платформ, в том числе из web интерфейса и т.д.
в принципе один плюсы как я понял.

с PHP никогда ранее дел не имел.

Создал пустое Android приложение, кинул на форму IdHTTP.
Добавил обработку кнопки:
Выделить всёкод Pascal/Delphi
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
procedure TTabbedForm.Button2Click(Sender: TObject);
var
  LoginInfo: TStringList;
  Response: TStringStream;
  Res: TStringList;
begin
  try
    Res:= TStringList.Create;
    LoginInfo := TStringList.Create;
    Response := TStringStream.Create('');
    LoginInfo.Add('dbname=u1039798_base1');
    LoginInfo.Add('charset=cp1251_general_ci');
    LoginInfo.Add('port=3306');
    LoginInfo.Add('user=u1039798_default');
    LoginInfo.Add('pass=fQY!cd8wg8Gi');
    LoginInfo.Add('sql = SELECT * FROM tbl');
    Res.Text:=IdHTTP1.Post('http://scp56.hosting.reg.ru',LoginInfo);
    Memo1.Lines.AddStrings(Res);
  finally
    begin
      Response.Free;
      LoginInfo.Free;
    end;
  end;
end;


На выходе в memo получаю следующее:
<html><head><META HTTP-EQUIV="Cache-control" CONTENT="no-cache"><META HTTP-EQUIV="refresh" CONTENT="0;URL=/cgi-sys/defaultwebpage.cgi"></head><body></body></html>

таблица следующей структуры:
Выделить всёкод SQL
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
CREATE TABLE u1039798_base1.tbl(
  id INT(11) NOT NULL AUTO_INCREMENT,
  name TEXT DEFAULT NULL,
  bdate DATE DEFAULT NULL,
  PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 3
AVG_ROW_LENGTH = 8192
CHARACTER SET cp1251
COLLATE cp1251_general_ci
ROW_FORMAT = DYNAMIC;


имеет как минимум 1 запись.

Собственно, просьба подсказать что не так. Спасибо.
PM MAIL   Вверх
Rodeon
Дата 7.5.2020, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 28.8.2008
Где: Россия, Ухта

Репутация: нет
Всего: нет



Вот же блин. Разобрался сам немного.
Многие примеры, на которые натыкался в интернете были на PHP 5.* версии. Сервер моего хостинга работает на версии PHP 7.0.
вместо обычного SQL -> SQL Improved (SQLi)
пришлось многие примеры адаптировать.
Очень помог сайт - Руководство по PHP
Оказывается надо на стороне сервера создать файл php.
Захожу по FTP на сервер в папку:
public_html/
создаю файл data.php следующего содержания:
Выделить всёРазвернуть кодкод PHP
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
<?php
$SERVER $_POST['DB_SERVER']; 
$USER $_POST['DB_USER']; 
$PASSWORD $_POST['DB_PASSWORD']; 
$DATABASE $_POST['DB_DATABASE']; 
/* Открыть соединение */
$link mysqli_connect($SERVER$USER$PASSWORD$DATABASE);
/* Проверить соединение */
if (mysqli_connect_errno()) {
    printf("Ошибка соединения: %s\n", mysqli_connect_error());
    exit();
}
/* изменение набора символов на utf8 */
mysqli_set_charset($link"utf8");
$query "SELECT * FROM tbl";
if ($result mysqli_query($link$query)) {
    /* извлечение ассоциативного массива */
    while ($row mysqli_fetch_assoc($result)) {
        printf ("%s (%s)\n"$row["id"], $row["name"], $row["bdate"]);
    }
    /* удаление выборки */
    mysqli_free_result($result);
}
/* закрытие соединения */
mysqli_close($link);
?>


Немного изменил обработку кнопки:
Выделить всёРазвернуть кодкод Pascal/Delphi
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
procedure TTabbedForm.Button2Click(Sender: TObject);
var
  LoginInfo: TStringList;
  Response: TStringStream;
  Res: TStringList;
  otvet: TData;
begin
  try
    Res:= TStringList.Create;
    LoginInfo := TStringList.Create;
    Response := TStringStream.Create('');
{    LoginInfo.Add('dbname=u1039798_base1');
    LoginInfo.Add('charset=cp1251_general_ci');
    LoginInfo.Add('port=3306');
    LoginInfo.Add('user=u1039798_default');
    LoginInfo.Add('pass=fQY!cd8wg8Gi');
    LoginInfo.Add('sql = SELECT * FROM tbl');    }
    LoginInfo.Add('DB_SERVER=localhost');
    LoginInfo.Add('DB_USER=u1039798_default');
    LoginInfo.Add('DB_PASSWORD=fQY!cd8wg8Gi');
    LoginInfo.Add('DB_DATABASE=u1039798_base1');
    Memo1.Lines.Text:=IdHTTP1.post('http://u1039798.cp.regruhosting.ru/data.php',LoginInfo);
{    Memo1.Lines.Add(otvet.Name);}
  finally
    begin
      Response.Free;
      LoginInfo.Free;
    end;
  end;
end;


Ковыряюсь дальше.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1047 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.