Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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 将Paypal返回字符串放入mysql数据库?_Php_Mysql_Curl - Fatal编程技术网

Php 将Paypal返回字符串放入mysql数据库?

Php 将Paypal返回字符串放入mysql数据库?,php,mysql,curl,Php,Mysql,Curl,我在一个文本文件中得到结果,如下所示: ?cmd=_notify-validate&test_ipn=1和payment_type=即时和支付_date=06年10月02:39:41,2011年PDT和付款状态=已完成和地址状态=已确认和付款人状态=已验证和名字=约翰和姓氏=史密斯和付款人电子邮件=buyer@paypalsandbox.com&付款人id=TESTBUYERID01&address\u name=John Smith&address\u country=US&address\u

我在一个文本文件中得到结果,如下所示:

?cmd=_notify-validate&test_ipn=1和payment_type=即时和支付_date=06年10月02:39:41,2011年PDT和付款状态=已完成和地址状态=已确认和付款人状态=已验证和名字=约翰和姓氏=史密斯和付款人电子邮件=buyer@paypalsandbox.com&付款人id=TESTBUYERID01&address\u name=John Smith&address\u country=US&address\u country\u code=US&address\u zip=95131&address\u state=CA&address\u city=San Jose&address\u street=123,任何街道与商业=seller@paypalsandbox.com&收件人/电子邮件=seller@paypalsandbox.com&接收人id=TESTSELLERID1&住宅地区=美国&商品名称=某物&商品编号=AK-1234&数量=1&发货=3.04&税收=2.02&货币=美元&费用=0.44&毛额=12.34&毛额=9.34&txn类型=网络接受&txn id=41106939,验证版本=2.1&定制=xyz123&字符集=windows-1252&验证符号=AB3bSjvFd3wXL7rCt.OOGW-nSKg-Ahh5RbboVG4bn9LSAon94Wjt2Oj9

如何解码该字符串并将其放入mysql数据库

我需要将客户的名字、姓氏、地址、电子邮件、项目编号、项目名称、数量、发货和时间戳放入数据库。请告诉我,我已经在代码方面走了这么远,我只需要帮助解码它并将其输入数据库。谢谢使用


您不需要解码字符串

我刚查了贝宝的文档。
notify validate
返回的唯一内容是字符串
VERIFIED
INVALID
。您发布的内容都不是PayPal返回字符串的一部分。如果你想知道姓氏,可以在
$\u POST['last\u name']
中找到

要将其放入mysql INSERT语句中,请执行以下操作(我只显示了4列,您可以推断出所需的所有字段):


可以使用&分解字符串以获取每个参数及其值,然后使用=分解字符串以获取键和值

$stmt = $con->prepare("INSERT INTO mytable (first_name, last_name, address, email) values (?, ?, ?, ?)");
$stmt->bind_param("ssss", $_POST['first_name'], $_POST['last_name'], $_POST['address'], $_POST['email']);
$stmt->execute();
$paypal\u result\u arr关联数组将为您提供从paypal返回的所有值。
之后,您可以使用代码$paypal\u result\u arr['first\u name']等获取名字…

您的文件似乎只包含post字段,结果在哪里?结果是您上面看到的字符串,我将其捕获到文本文件中。这不会解码查询字符串中的特殊字符,如%hex代码。这就是为什么您应该使用类似于
parse\u str
的函数。我知道sql代码,只是不知道如何将数组放入msysql insert语句中。我添加了一些代码来说明这一点,它假设您使用的是mysqli API。如果您使用PDO,翻译应该是显而易见的。如果您使用的是mysql扩展,请升级。没错,notify validate返回verified或invalid。我得到的结果发送IPN从贝宝到文本文件。该字符串中的一些字段是我在数据库中想要的。我理解sql语句。问题是,即使在涉及txt文件构建数组之前,我如何从字符串中获取last_name,然后获取结果并将其放入数据库?“$stmt=$con->prepare”前面是什么?您不能从字符串中获取它。字符串来自
$\u POST
。因此,只需从
$\u POST
获取它。您是否使用与将命令发送到PayPal的脚本不同的脚本来执行此操作?这就是你需要使用该文件的原因吗?我建议您将
json\u encode($\u POST)
写入文件,而不是查询字符串。然后使用
json\u decode()
将其转换回数组。
parse_str($string,$array);
var_dump($array);
$stmt = $con->prepare("INSERT INTO mytable (first_name, last_name, address, email) values (?, ?, ?, ?)");
$stmt->bind_param("ssss", $_POST['first_name'], $_POST['last_name'], $_POST['address'], $_POST['email']);
$stmt->execute();
$params = explode('&', $result);

$paypal_result_arr = array();

foreach($params AS $param) {
   $param_arr = explode('=', $param);

   if(count($param_arr) == 2) {
       $paypal_result_arr[$param_arr[0]] = $param_arr[1];
   }
}