【问题标题】:What is the best way to transfer data from database using curl使用 curl 从数据库传输数据的最佳方法是什么
【发布时间】:2017-05-17 09:49:19
【问题描述】:

我已经阅读了很多关于 php CURL 的内容,但我仍然无法掌握它发送数据的机制,似乎无法使用 curl 直接从数据库发送 php 数组或 php 对象,但它似乎可以使用 JSON 发送数据,因为 curl 将数据作为字符串返回,但我在某处读到可以将 php 数组或对象作为发布数据并通过 curl 发送(我猜有点像 ajax) .但是,我还没有找到有关此的干净且适当的教程或示例。

我希望任何对 curl 有足够了解的人都可以分享一个有关如何正确发送数据的示例,例如从 mysql 数据库中使用 curl 作为数组/对象/JSON。希望它对将来寻找使用 curl 跨域发送数据的方法的人有用。

提前谢谢你。

【问题讨论】:

    标签: php mysql json curl php-curl


    【解决方案1】:

    cURL 发出 HTTP 请求。它可以向 HTTP 服务器发出 HTTP 请求,也可以从 HTTP 服务器获得 HTTP 响应。

    它无法与数据库通信。它可以与运行服务器端程序(可以用 PHP 编写)的 HTTP 服务器通信,该程序从数据库获取数据,将其格式化为 HTTP 响应并发送。

    HTTP 请求或响应可以包含文本。 PHP 数组不是文本。 PHP 对象不是文本。 JSON 是文本。 json_encode 函数将 PHP 数组转换为 JSON 文本。

    【讨论】:

    • 对不起我的语言,是的,通过从数据库获取响应,我的意思是它从另一个 php 文件中调用,该文件从数据库中检索数据。所以你说没有办法使用 cURL 将 php 数组数据作为 HTTP 响应发送?
    • @Charas — 您必须将其转换为文本……请参阅答案的最后一段,它解释了如何做到这一点。
    • 好的,谢谢,我了解将其转换为文本(作为 JSON),然后 json_decode($result, true) 将其作为数组获取。我一直在寻找类似 return $array 的东西,只是将 $result 作为一个数组而不将其转换为文本。看来那是不可能的了。谢谢。
    【解决方案2】:

    您不能使用 cURL 将数据作为数组发送,因此此时最好的选择是使用 JSON 发送数据。您可以通过以下方式进行操作..

    $data = array("name" => "Hagrid", "age" => "36");                                                                    
    $data_string = json_encode($data);                                                                                   
    
    $ch = curl_init('http://your-url-to-post-the-data');                                                                      
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
        'Content-Type: application/json',                                                                                
        'Content-Length: ' . strlen($data_string))                                                                       
    );                                                                                                                   
    
    $result = curl_exec($ch);
    

    您也可以按照POSTing JSON Data With PHP cURL的说明进行操作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-05
      • 2023-04-02
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多