如何在php中传递查询字符串上的数组值
我需要你的帮助 如何在查询字符串中传递数组值如何在php中传递查询字符串上的数组值,php,arrays,query-string,Php,Arrays,Query String,我需要你的帮助 如何在查询字符串中传递数组值 <?php foreach ( $Cart->getItems() as $order_code=>$quantity ) : $pname[]= $Cart->getItemName($order_code); $item[]= $Cart->getItemPrice($order_code);
<?php
foreach ( $Cart->getItems() as $order_code=>$quantity ) :
$pname[]= $Cart->getItemName($order_code);
$item[]= $Cart->getItemPrice($order_code);
$qty[]=$quantity;
endforeach;
?>
<form action='expresscheckout.php?amt=<?php echo $total_price; ?>&item_name=<?php echo $pname; ?>&unit=<?php echo $item; ?>&quan=<?php echo $qty; ?>' METHOD='POST'>
<input type='image' name='submit' src='https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif' border='0' align='top' alt='Check out with PayPal'/>
</form>
要传递数组值,应使用[]。
例如
基本上,您只需要使用PHP函数将数组转换为逗号分隔的列表。i、 e.对于$item数组:
$item = array('item1', 'item2');
echo implode(',', $item);
将输出:
item1,item2
因此,类似这样的内容应该打印一个类似于所需内容的查询字符串:
echo 'pname='.implode(',', $pname).
'&item='.implode(',', $item).
'&qty='.implode(',', $qty);
您需要序列化数组
在php中序列化
生成的可存储表示形式
价值
这对于存储或传递非常有用
PHP值在不丢失其
类型和结构
将序列化字符串转换为
PHP值,再次使用unserialize()
参考:-
范例
$my_array= (array('val1', 'val2','val3');
server.php?query_string=serialize($my_array)
在服务器页面中
$query_string= unserialize($_REQUEST['query_string']);
现在它将是数组格式
我希望这对您有所帮助-有一个简单的方法来检查我的答案。不用担心,我知道序列化变量是什么。OP希望查询字符串采用我提供的格式。顺便说一句,您提交的不是URL编码的,但我不建议在任何情况下通过URL传递序列化的PHP。请问,为什么不建议序列化?仅针对不跨平台的奇怪可怕的URL(即RESTful的反面),并且从PHP动态类型的安全角度来看,这将使输入验证变得非常复杂。持久化复杂的数据结构是会话的目的,URL是指资源ID,而不是包含PHP、SQL或其他编程代码。使用一个urlencoded序列化PHP的querystring变量并没有什么严格的违法之处,这不是一个好的做法。我相信AjayR知道这一点,但对于阅读此答案的人来说:永远不要像下面所示那样直接将未经调整的值设置到SQL语句中。这只是一种简化,以避免在答案中放入一堆与问题无关的代码。是的,Micheal,我只是为了简单起见展示了代码,我们需要在插入数据库之前处理SQL注入和其他事情。
$my_array= (array('val1', 'val2','val3');
server.php?query_string=serialize($my_array)
$query_string= unserialize($_REQUEST['query_string']);