使用cURL时存储的重复数据

时间:2015-05-12 10:36:35

标签: php curl

我正在尝试使用cURL将数据发布到我的Web服务中以将数据存储到数据库中,但是它存储了两次相同的数据,而不是一次。我在那里应用了条件并且它正在工作但是我找不到这种行为背后的原因。

        $postedArray['login_credentials'] = $this->login_data;
        $postedArray['post_data'] = $this->arrPostData;

        $str = http_build_query($postedArray);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
        curl_setopt($ch, CURLOPT_URL, $this->requestUrl);
        curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $str);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 999);
        curl_setopt($ch, CURLOPT_TIMEOUT, 999);
        if (curl_exec($ch) === false) {
            echo 'Curl error: ' . curl_error($ch);
            return false;
        }
        $response = curl_exec($ch);
        $response = json_decode($response, true);

        curl_close($ch);
        return $response;

2 个答案:

答案 0 :(得分:2)

因为你实际上两次调用curl_exec:

if (curl_exec($ch) === false) {
        echo 'Curl error: ' . curl_error($ch);
        return false;
}
$response = curl_exec($ch);

第一次评估if内部的响应,然后再次if之后。应该放弃一个。

答案 1 :(得分:0)

仅使用curl_exec($ ch)一次,代码应如下所示:

//代码到这里

$response = curl_exec($ch);
if ($response === false) 
{
echo 'Curl error: ' . curl_error($ch);
return false;
}
else
{
$json_response = json_decode($response, true);
}
curl_close($ch);
return $json_response;