繁体   English   中英

遍历$ _GET结果

[英]loop through $_GET results

如果我有这样的事情:

?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表中?

还是我需要在每个$_GET末尾添加行标识符(即, qty 1 =1&partno 1 =ipod ...)?

感谢您的光临。

您可以循环$_GET 它只是一个数组:

foreach ($_GET as $key => $value) { }

在进行SQL查询时,请记住清理所有输入。 同样用于在页面上显示值。 使用htmlentities清理HTML显示。 假设您的数据库是MySQL,请对SQL使用mysql_real_escape_string

$ _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>";
}

希望这可以帮助。

小心! 有人可以轻松更改此内容并提交:

?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

注意: “单价”分别为102.99和45.99,但已更改为0.99和0.05,我想它们现在已经以很高的价格出售!

请参阅常见问题解答。 如何在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仅用于数据检索

特别是,已经建立了约定,即GET和HEAD方法不应具有除检索之外的其他任何操作。

对于具有副作用(服务器上的数据更改)的请求,应使用POST。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM