我正在我的网站上集成一种贝宝支付方式,我运行得很好,我被贝宝发送到我的返回URL,其中包含有关客户和购买物品的信息。
我在确认阵列上得到以下结构
Array
(
some customer info
...
[L_NAME0] => Frame%20Rojo
[L_NAME1] => External%20Hard%20Disk
[L_NUMBER0] => PD1002
[L_NUMBER1] => PD1003
[L_QTY0] => 1
[L_QTY1] => 1
[L_TAXAMT0] => 0%2e00
[L_TAXAMT1] => 0%2e00
[L_AMT0] => 29%2e00
[L_AMT1] => 100%2e00
...
)
我感兴趣的是将整个项目列表、数量和价格保存到我的数据库中,这样我以后就可以跟踪发送的内容和未发送的内容。
我的问题是,正如你所看到的,贝宝会向我返回一组名称为"something+n"(L_NUMBER0等)的值,所以,我不能在我的DDBB上设置一个表,因为我不知道用户会得到多少项目。我可以把它保存在两个表上:purchase和items_per_purchase之类的结构,但我仍然面临解析该数组的问题。
最好的方法是什么来浏览它,看看每次购买有多少物品可以保存?
我想到了某种能看到的海盗:
while(if(isset($_GET['L_NUMBER'.$cont]))) {
// save to ddbb
L_NAME.$cont
L_NUMBER.$cont
...
cont++
}
并增加一些计数器,但我想知道是否有更好的解决方案。
我认为您的解决方案很好,尽管在while
测试中不需要if
。。。
$cont = 0;
while (isset($_GET['L_NUMBER' . $cont])) {
// save to database after assembling array keys as follows...
// L_NAME . $cont
// L_NUMBER . $cont
// etc.
cont++;
}
而且您永远不应该相信来自$_GET
的输入。我建议在PDO中使用参数化查询。