Перейти к содержанию
Fire Monkey от А до Я
  • 0

MySQL


Илья Захаров

Вопрос

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

Ссылка на комментарий

Рекомендуемые сообщения

  • 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
7 часов назад, ENRGY сказал:

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

Изменено пользователем Илья Захаров
Ссылка на комментарий
  • 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
Ссылка на комментарий
  • 0
В 31.03.2017 в 18:50, Vitaldj сказал:

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

Подскажите, почему не рекомендуется прямое подключение мобильного устройства к удаленной базе данных? Где можно почитать об этом?

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...