Использование сценария PHP для подключения к MySQL для настольного приложения - PullRequest
2 голосов
/ 06 февраля 2011

Хорошо, вот в чем дело.

Мой веб-хостинг, который оказался самым дешевым и надежным в моей стране, не разрешает прямой доступ к моей базе данных MySQL. Я могу подключиться к нему только через "localhost" на сайте.

Это немного странно, поскольку мне нужно написать настольное приложение для взаимодействия с базой данных (можно использовать веб-интерфейс, но я бы хотел этого избежать, если смогу). Я, вероятно, напишу это в C #.

Так что, возможно, я мог бы сделать простой скрипт соединения PHP MySQL и каким-то образом запросить базу данных с помощью C #, используя это соединение. Это возможно?

Ответы [ 5 ]

3 голосов
/ 06 февраля 2011

Это, конечно, возможно.Обычно для этой цели используются сценарии прямого интерфейса базы данных.Но позаботьтесь об ограничении доступа ( .htpasswd, Allow From, https? ) к нему.

Вы можете использовать простой интерфейс JSON или POST, который напрямую принимает запросы SQL и просто возвращаетрезультат в виде массива JSON:

<?php
// maybe even: $_POST = json_decode(file_get_contents("php://input"));

$db = new PDO(...);
$stmt = $db->prepare($_POST["query"]);
$stmt->execute($_POST["params"]);   // enumerated array

print json_encode($stmt->fetchAll());

Может потребоваться добавить проверку ошибок и разработать механизм сигнализации (обычно достаточно отправить массив результатов с магическими значениями или идентификаторами, чтобы отличить его от обычных списков данных).

2 голосов
/ 06 февраля 2011

Я могу сказать, что вы можете использовать SQLyog php-mysql tunnel, но даже это сценарий быстрого туннеля, вам нужно подумать о некотором процессе задержки, когда вы получаете большие или огромные результаты, которые должны быть обработанысначала по сценарию, прежде чем отправлять ответ вашему приложению, поэтому, если это программное обеспечение не является критичным ко времени, оно будет работать нормально, в противном случае я призываю вас найти лучшее решение для хостинга даже за пределами вашей страны.

1 голос
/ 06 февраля 2011

Я бы написал веб-сервис для сбора данных и возврата их в более удобном для использования формате, вместо того чтобы позволять сценарию выполнять необработанные запросы. Это дает вам лучшую безопасность (не допуская произвольных запросов) и облегчая обслуживание (позволяя изменять базовую инфраструктуру, не связываясь со сценарием сервера и клиентом рабочего стола).

0 голосов
/ 06 февраля 2011

Если ваше требование от клиента - прямой доступ, я поменяю хосты и использую сторонний клиент mysql и не буду заново изобретать колесо.

0 голосов
/ 06 февраля 2011

Да. Это возможно. Вы можете использовать PHP для подключения и выполнять запросы там. Пожалуйста, не забудьте добавить несколько кодов безопасности для PHP-кода. потому что http-доступ к вашему php-коду вызовет опасность. Вы можете зашифровать выходные данные PHP.

...