循环$ _GET结果

时间:2009-08-03 13:02:59

标签: php sql html

如果我有这样的事情:

?FormSub=Submit&qty=1&partno=ipod&notes=apple&unitprice=102.99&rowid=1&qty=2&partno=Ear+Buds&notes=Headphones&unitprice=45.99&rowid=2

是否可以遍历GET以将结果返回到HTML表中并添加到SQL表中?

或者我是否需要将rowid添加到每个$_GET的末尾(即qty 1 =1&partno {{ 1}} 1 ...)?

感谢您的光临。

4 个答案:

答案 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&notes=apple&unitprice=0.99&rowid=1&qty=2&partno=Ear+Buds&notes=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&notes[]=apple&unitprice[]=102.99&rowid[]=1&qty[]=2&partno[]=Ear+Buds&notes[]=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。