• 0
Илья Захаров

MySQL

Вопросы

Пишу приложение под iOS и Android... Создал базу данных на хостинге написал скрипты на PHP для получения данных. Пробовал GET запросом получить данные, возвращает пустые значения. Если через браузер смотреть то массивы данных возвращает правильно. Кто ни буть цепочки может написать как правильно это все реализовать.... Какие компоненты и какие статьи почитать... Заранее спасибо...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 ответов на этот вопрос

  • 0
29 минут назад, Илья Захаров сказал:

Пишу приложение под iOS и Android... Создал базу данных на хостинге написал скрипты на PHP для получения данных. Пробовал GET запросом получить данные, возвращает пустые значения. Если через браузер смотреть то массивы данных возвращает правильно. Кто ни буть цепочки может написать как правильно это все реализовать.... Какие компоненты и какие статьи почитать... Заранее спасибо...

Я это делаю на windows и mac, поэтому не знаю как себя поведет скрипт, но думаю ему без разницы. На стороне сервера я делаю php скрипт 

<?php

$pdo = new PDO('mysql:dbname=имя базы данных;host=localhost','имя юзера', 'пароль');

$pdo->exec("SET NAMES 'cp1251'"); // твоя кодировка, чтобы сервер тебя  правильно понял

$stmt = $pdo->prepare(" SELECT max(id) as id FROM grls_status WHERE type = 'main' ");

$stmt->execute(); // возвращает boolean - удалось ли выполнить запрос

 $allRows = $stmt->fetchAll(); // ассоциативный массив (см. документацию,  если нужны другие варианты)

 foreach ($allRows as $row) {print ",$row[id], ";}

php?>

В проекте делаю post запрос (хотя можно и get):

 sql_param:=TStringList.Create; // это параметры, которые можно передать. если ничего не надо передавать, то можно оставить пустую.

  form1.memo1.Lines.Add( form1.IdHTTP1.post( 'http://'+my_web+'/scri2/script.php', sql_param )); //my_web - это имя сервера

Знаю, что на мобильных не рекомендуется использовать indy, используй nethttp

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 час назад, Vitaldj сказал:

Я это делаю на windows и mac, поэтому не знаю как себя поведет скрипт, но думаю ему без разницы. На стороне сервера я делаю php скрипт 


<?php

$pdo = new PDO('mysql:dbname=имя базы данных;host=localhost','имя юзера', 'пароль');

$pdo->exec("SET NAMES 'cp1251'"); // твоя кодировка, чтобы сервер тебя  правильно понял

$stmt = $pdo->prepare(" SELECT max(id) as id FROM grls_status WHERE type = 'main' ");

$stmt->execute(); // возвращает boolean - удалось ли выполнить запрос

 $allRows = $stmt->fetchAll(); // ассоциативный массив (см. документацию,  если нужны другие варианты)

 foreach ($allRows as $row) {print ",$row[id], ";}

php?>

В проекте делаю post запрос (хотя можно и get):

 sql_param:=TStringList.Create; // это параметры, которые можно передать. если ничего не надо передавать, то можно оставить пустую.

  form1.memo1.Lines.Add( form1.IdHTTP1.post( 'http://'+my_web+'/scri2/script.php', sql_param )); //my_web - это имя сервера

Знаю, что на мобильных не рекомендуется использовать indy, используй nethttp

 

Спасибо...  А если допустим есть процедура  и ей передать нужно передать параметры как это выглядеть будет? И я вроде слышал что нужно токены для защиты генерить или это не обязательно? для пользователя разрешено только выполнение процедур.. И обязательно ли id сессии хранить и передовать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
38 минут назад, Илья Захаров сказал:

Спасибо...  А если допустим есть процедура  и ей передать нужно передать параметры как это выглядеть будет? И я вроде слышал что нужно токены для защиты генерить или это не обязательно? для пользователя разрешено только выполнение процедур.. И обязательно ли id сессии хранить и передовать

Ну про защиту и токены - это вопрос не в этой ветке форума. Конечно лучше использовать, если у вас что то конфиденциальное. И если вы не хотите чтобы кто нибудь что нибудь сломал. И на совсем понял вопрос про id сессии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
6 минут назад, Vitaldj сказал:

Ну про защиту и токены - это вопрос не в этой ветке форума. Конечно лучше использовать, если у вас что то конфиденциальное. И если вы не хотите чтобы кто нибудь что нибудь сломал. И на совсем понял вопрос про id сессии.

Еще раз спасибо разобрался..))) все пошло 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 минуту назад, Илья Захаров сказал:

Еще раз спасибо разобрался..))) все пошло 

Удачи!;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
54 минуты назад, ENRGY сказал:

Объясните для чего так делать? Почему не использовать например FireDac?

Пример в студию!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
7 часов назад, ENRGY сказал:

как прямой коннект к базе через мобильный интернет работать будет ... Вроде читал что FireDac с Android не дружит...

Изменено пользователем Илья Захаров

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Илья Захаров

FireDac мультиплатформенный, это то что рекомендует использовать Embarcadero для доступа к база. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
9 часов назад, ENRGY сказал:

Ты предлагаешь прямой коннект с мобилы на mysql???? И для мобильных операционных систем ты не найдешь драйвера для коннекта к mysql.

Изменено пользователем Vitaldj

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

 

Цитата

Vitaldj

И для мобильных операционных систем ты не найдешь драйвера

Вообще информации много в сети по поводу доступа из моб. систем при помощи FireDac, это и статьи, видео и темы на форумах..

Откуда у вас такая информация? 

http://docwiki.embarcadero.com/RADStudio/Berlin/en/Mobile_Tutorial:_Using_FireDAC_and_SQLite_(iOS_and_Android)

 

Изменено пользователем ENRGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
16 минут назад, ENRGY сказал:

 

Вообще информации много в сети по поводу доступа из моб. систем при помощи FireDac, это и статьи, видео и темы на форумах..

Откуда у вас такая информация? 

http://docwiki.embarcadero.com/RADStudio/Berlin/en/Mobile_Tutorial:_Using_FireDAC_and_SQLite_(iOS_and_Android)

 

А вы случайно не путаете sqlite и mysql ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Vitaldj

Идея была в том что FireDac универсальный мультиплатформенный компонент для доступа к разным базам данных.

Покурив мануалы, понял что FireDac MySQL не работает на моб. платфомах, есть только вариант использовать DevArt DAC, он работает с mySQL с моб. платформы, правда он платный (FireDac тоже в принципе платный ).

Изменено пользователем ENRGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
18 минут назад, ENRGY сказал:

Vitaldj

Идея была в том что FireDac универсальный мультиплатформенный компонент для доступа к разным базам данных.

Покурив мануалы, понял что FireDac MySQL не работает на моб. платфомах, есть только вариант использовать DevArt DAC, он работает с mySQL с моб. платформы, правда он платный (FireDac тоже в принципе платный ).

Да, правильно, firedac напрямую не работает с mysql на мобилах. Я использую для этого liteDac, но не для продакшина, а только для себя. В продакшине не советую использовать прямой коннект. Поэтому используйте трехзвенку или через скриптовые языки, как php.

Изменено пользователем Vitaldj

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От Ilya.Z
      День добрый, может кто то сталкивался с такой проблемой - при использовании связки Unidac (пробовал и  FireDac) Delphi 10,1 + FirePower 10
      Подключаю Grid и в обычном wwDataGrid отрабатывается нормально,
      если взять wwLayoutGrid то ,при запуске программы, во всех ячейках отображается первая запись таблицы, при этом в дизайн моде все правильно показывает.
      в демосах при использовании MemDataset все норм, все красиво
      PS если dataset находится в той же форме что и layoutgrid все работает как надо, стоит перенести в отельный datamodule показывает лишь первую запись во всей таблице
      может кто подскажет идею, куда копать ? или сталкивался с похожей ситуацией ?
      Спасибо
       
      PS Вопрос закрыт, проблема в моем же дополнительном компоненте ..сорри мдам, буду разбираться от чего )
    • От striker
      Добрый день!
      Работаю с MySQL
      Подключаюсь через FireDac.
      FDQuery+FDConnecton+Bind+Grid
      Запрос выполняется моментально, но как только подключаю Grid - начинает висеть. Grid заполняется очень долго - секунд 12-15.
      Причем результат запроса - всего 230 строк, хоть и join присутствует.
      Куда копать? Может дело быть именно в FMX?
    • От Anasazi
      Всем доброго времени суток. Возникла необходимость решить такую задачу: в таблице базы MySQL хранится список изображений и их URL. Необходимо получить этот список массивом. Затем загрузить изображения и поочередно с интервалом показать их в TImage.
      Понимаю, что получить список изображений правильнее при помощи PHP скрипта, но в каком виде скрип должен вернуть данные, чтобы в Delphi получить из них массив не знаю.
      Раньше для получения изображений использовал такую процедуру. Но вопрос, где хранить изображения перед демонстрацией их в TImage? Создавать несколько MemoryStream?
      procedure LoadWebImage(url: string; image: TBitmap);
      var
        idhttp : TNetHTTPClient;
        ms : TMemoryStream;
      begin
       IdHTTP := TNetHTTPClient.Create(nil);
        ms := TMemoryStream.Create;
        try
          idhttp.Get(url, ms);
          ms.Position := 0;
          image.LoadFromStream(ms);
        finally
          ms.Free;
          idhttp.Free;
        end;
      end;
    • От ENERGY
      Как залить с Delphi Android в базу MySql строки, я примерно понял - составляем GET запрос и вставляем строки в параметры, затем считываем их в PHP скрипте и в базу.
      А вот как быть с картинкой. Как добавить картинку через PHP скрипт из программы на Android?
      POST запрос? Кто нибудь делал такое уже?
      Спасибо 
       
      P.s. На данный момент FireDAC не поддерживает работу с MySQL из под Android. Пока только SQLite и  InterBase ToGo. Даже если в будущем будет поддерживать, многие на этом форуме рекомендуют не использовать прямое подключение к базам из под мобильных систем, а использовать прямые GET запросы к примеру к PHP скриптам. Это связано с нестабильностью интернета т.к. так интернет может часто переключаться (от вышки к вышке) и менять параметры подключения. 
    • От Илья Захаров
      Помогите пожалуйста, поделитесь информацией или примерчиком. Есть база данных MySQL на хостинге Макхост. Мне нужно для соединения,работы с ней использовать SSH протокол я не понимаю как это сделать... может в компонентах FireDAC есть какая ни будь фича?  
    • От Djchel
      Доброго дня,форумчане.
      Уважаемые знатоки,ответьте пожалуйста,в чем у меня может быть проблема.Создаю приложение для Андрюши как дипломный проект. Использую связку MySQL+UniDac(direct connect). При подключении к интернету через WiFi прога работает на ура.Но при подключении через 3G не подключается никак.Connectoin timeout.Пробовал увеличить его- безрезультатно.может настройки какие поправить необходимо или ещё какие секреты есть.
      P.S. использовать прослойку не вижу смысла,да и знаний пока маловато в этой области.
    • От ivadimos
      Есть необходимость использовать js(php) код в делфи.
      Могу ли я каким-то образом просто подключать файлы, передавать в скрипт значение и получать ответ.
    • От Axbor
      Пытаюсь запустить демо проект из коробки XE10 которая находится по этому пути: C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Object Pascal\Database\FireDAC\Samples\Getting Started\MySQL
      При попытке соединится с сервером выдает ошибку 
      Client does not support authentication protocol requested by server; consider upgrading MySQL client
      Как это исправит?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу