使用http在远程sql db上运行查询

时间:2011-07-27 17:07:25

标签: php mysql http

我正在尝试通过php连接到sql db,但似乎我的托管服务提供商已阻止访问连接到远程数据库,因此我被告知使用http和“解析密钥”到我的其他主机帐户(使用不同的托管服务提供商)并从那里运行mysql查询,然后将数据发送回原始数据。

我需要连接到数据库并检查某些行中的某些信息。然后通过使用if函数,根据从db返回的内容处理不同的代码(如果信息正确并且在正确的行中,处理x代码并且如果db中的信息不正确,则处理y代码。)

^^即我正在尝试运行的查询^^

我已经将其全部工作,然后实际连接到db部分,因为我的托管服务提供商阻止了它。他们告诉我使用http(如上所述),但我不知道该怎么做。

任何人都可以解释(请用英文)我将如何使用http来做这样的事情?或者更好,一个更简单的解决方案?

我无法更改托管服务提供商....

由于

3 个答案:

答案 0 :(得分:0)

您可以使用CURL在另一台服务器上请求该php页面,然后处理响应。

创建卷曲请求的示例

$encoded = ''; // include GET variables foe example. POST will be similar
foreach($_GET as $name => $value) {
  $encoded .= urlencode($name).'='.urlencode($value).'&';
}
// chop off last ampersand
$encoded = substr($encoded, 0, strlen($encoded)-1)
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "myOtherHostThatBlockedMysqlAccess.com/mysqlPage.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,  $encoded);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
$output = curl_exec($ch); 
curl_close($ch);  

所以 - 我们在前面的例子中做了什么 - 我们在有权访问你的Mysql数据库的服务器上请求mysqlPage.php。在那个页面中 - 你将不得不放置你的Mysql访问逻辑。 从db中检索记录后 - 你可能会得到一些像$ someDbArray这样的数组 - 你可以序列化这个数组并简单地将它回显出来:

echo serialize($someDbArray);

无论你回应什么,你都可以在$ output输出变量中找到它。所以你可以像这样简单地淘汰你的数组:

$myDataArray = unserialize(output);

然而 - 如果你问我 - 最好的解决方案是获得一个不限制任何地方访问的托管。我假设你正在使用共享主机?我会切换到至少VPN或专用服务器。我的意思是 - 无论你走哪条路 - 通过REST或CURL - 延迟都是巨大的。另外 - 我不确定你将转移什么样的数据,但想到安全性。你必须至少使用https。

答案 1 :(得分:0)

最好在远程站点中构建一些REST服务。这样,它可以使用标准HTTP机制提供安全且方便的数据挖掘(读/写)。

答案 2 :(得分:0)

如果您可以在服务器上运行守护程序,请尝试DBSlayer。它为MySQL提供了一个HTTP接口,其中包括。