如果我有这样的事情:
?FormSub=Submit&qty=1&partno=ipod¬es=apple&unitprice=102.99&rowid=1&qty=2&partno=Ear+Buds¬es=Headphones&unitprice=45.99&rowid=2
是否可以遍历GET以将结果返回到HTML表中并添加到SQL表中?
或者我是否需要将rowid添加到每个$_GET
的末尾(即qty
1
=1&partno
{{ 1}} 1
...)?
感谢您的光临。
答案 0 :(得分:42)
您可以循环浏览$_GET
。它只是一个数组:
foreach ($_GET as $key => $value) { }
当您进行SQL查询时,请记住清理所有输入。同样用于在页面上显示值。使用htmlentities
清理HTML显示。假设您的数据库是MySQL,请使用mysql_real_escape_string
作为SQL。
答案 1 :(得分:7)
$ _ GET是一个数组..所以你可以使用foreach迭代它
foreach($_GET as $query_string_variable => $value) {
echo "$query_string_variable = $value <Br />";
}
您也可以extract($_GET)
将所有这些变为变量..但我不建议。
如果要将其保存到数据库,则应考虑mysql_real_escape_string($value)
。
打印HTML表格..你想要这样的东西吗?
$count = count($_GET);
if($count > 0) {
echo "<table>";
foreach($_GET as $query_string_variable => $value) {
echo "<tr><td>$query_string_variable</td><td>$value</td></tr>"
}
echo "</table>";
}
希望这会有所帮助。
答案 2 :(得分:6)
小心!有人可以轻松改变这一点并提交:
?FormSub=Submit&qty=1&partno=ipod¬es=apple&unitprice=0.99&rowid=1&qty=2&partno=Ear+Buds¬es=Headphones&unitprice=0.05&rowid=2
注意:“unitprice”是102.99和45.99,但已经改为0.99和0.05,我猜他们现在以优惠的价格出售!
答案 3 :(得分:1)
请参阅FAQ How do I create arrays in a HTML <form>
?
所以在你的情况下请求:
?FormSub=Submit&qty[]=1&partno[]=ipod¬es[]=apple&unitprice[]=102.99&rowid[]=1&qty[]=2&partno[]=Ear+Buds¬es[]=Headphones&unitprice[]=45.99&rowid[]=2
将创建一个表单数组:
array(
'FormSub' => 'Submit',
'qty' => array(
0 => '1',
1 => '2'
),
'partno' => array(
0 => 'ipod',
1 => 'Ear Buds'
),
'notes' => array(
0 => 'apple',
1 => 'Headphones'
),
'unitprice' => array(
0 => '102.99',
1 => '45.99'
),
'rowid' => array(
0 => '1',
1 => '2'
)
)
但我希望您不接受这些价值而不进行验证,甚至将其用于实际订单。
另外GET is intended to be used for data retrieval only:
特别是,已经建立了一个惯例,即GET和HEAD方法不应该具有采取除检索之外的动作的重要性。
对于有副作用的请求(更改服务器上的数据),您应该使用POST。