Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP HTTP Post to REST服务未更新数据库_Php_Curl - Fatal编程技术网

PHP HTTP Post to REST服务未更新数据库

PHP HTTP Post to REST服务未更新数据库,php,curl,Php,Curl,我在下面有这个curl请求,在另一篇文章中成功地解决了这个问题。现在,我的PHP似乎没有任何错误地完成了这段代码,转到IF语句的下一部分并发送确认电子邮件。它只是没有从web服务中更新数据库。如果这不起作用,我将不得不向web服务的创建者发送电子邮件,但我只想在执行此操作之前确保代码相当可靠。有人有什么想法吗?代码如下: $url = 'http://127.0.0.1:85/AccountCreator.ashx'; $curl_post_data = array( 'compan

我在下面有这个curl请求,在另一篇文章中成功地解决了这个问题。现在,我的PHP似乎没有任何错误地完成了这段代码,转到IF语句的下一部分并发送确认电子邮件。它只是没有从web服务中更新数据库。如果这不起作用,我将不得不向web服务的创建者发送电子邮件,但我只想在执行此操作之前确保代码相当可靠。有人有什么想法吗?代码如下:

$url = 'http://127.0.0.1:85/AccountCreator.ashx';


$curl_post_data = array(
    'companyName' =>urlencode($companyName),
    'mainContact' =>urlencode($mainContact),
    'telephone1' =>urlencode($telephone1),
    'email' => urlencode($email),
    'contact2' => urlencode($contact2),
    'telephone2' => urlencode($telephone2),
    'email2' => urlencode($email2),
    'package' => urlencode($package)
    );

foreach($curl_post_data as $key=>$value) {$fields_string .=$key. '=' .$value.'&';
}
rtrim($fields_string, '&');
//die("Test: ".$fields_string);

$ch = curl_init();

curl_setopt ($ch, CURLOPT, $url);
curl_setopt ($ch, CURLOPT_POST, count($curl_post_data));
curl_setopt ($ch, CURLOPT_POSTFIELDS, $fields_string);

$result = curl_exec($ch);

curl_close($ch);

CURLOPT_POSTFIELDS选项接受POST数据的关联数组。可能最好使用这个字符串,而不是自己构造查询字符串,这样当它爆炸时,您就可以责怪其他人了

PHP手册:

要在HTTP“post”中发布的完整数据 活动要发布文件,请在 文件名为@,并使用完整路径。 这可以作为 类字符串编码 “para1=val1¶2=val2&…”或作为 将字段名作为键和 字段数据作为值。如果值是 数组,则内容类型标头将为 设置为多部分/表单数据


首先,问题是什么?如果您准确地解释了代码中的故障是什么,那么就更容易进行故障排除。其次,您在这段代码中做了一些奇怪的事情:

我不明白你为什么这么做

curl_setopt ($ch, CURLOPT_POST, count($curl_post_data));
CULLOPT_POST需要布尔(真/假)设置。您应该将其设置为
true

其次,您不需要手动编码
CURLOPT_POSTFIELDS
。制作一个数组,让cURL在内部处理它:

$curl_post_data = array(
    'companyName' =>$companyName,
    'mainContact' =>$mainContact,
    'telephone1' =>$telephone),
    'email' => $email,
    'contact2' => $contact2,
    'telephone2' => $telephone2,
    'email2' => $email2,
    'package' => $package
);

这些可能无法解决问题,但可能会有所帮助。

是的。这可能没有什么区别(可能是数字被转换为布尔值,因此任何正整数都被解释为true),但可能是忽略了非布尔值。感谢您的回复。我已将其更改为true,并将进行测试。你好,lonesomeday,您关于编码的看法是正确的,我的电子邮件地址以前显示不正确,但自从我删除此项后,现在显示不正确。我已经更新了我的帖子来说明这个问题。我的问题是,这段代码应该调用一个web服务在数据库中创建一个新用户,但是这并没有实现。但是,我没有看到web服务的代码,因为它是由其他人编写的,所以我不确定问题出在哪里。这就是为什么我想消除上述代码的问题