Перейти к содержанию
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 эмодзи.

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

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

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

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