我正在创建一个简单的在线商店,如程序。你有什么建议,我可以这样做,我可以循环我在程序中的输入。
我仍在使用get以便我可以看到数据的样子,我会将其更改为稍后发布。 当我提交购买购物车中添加的所有产品时,这就是网址的样子: http://localhost/pos/php/checkout.php?ids=2;&qoh=12;&qbuys=&ids=6;&qoh=2304;&qbuys=304&ids=4;&qoh=699;&qbuys=99
这是我用来只提交一个产品的代码,当我在上面的url中有类似的东西时它不起作用:
<?php
$id=$_GET['ids'];
$qtyhnd=$_GET['qoh'];
$qtytbuy=$_GET['qbuys'];
$left=$qtyhnd-$qtytbuy;
if($qtyhnd>=$qtytbuy){
$update=query_database("UPDATE prod_table SET QTYHAND='$left' WHERE PID='$id'", "onstor", $link);
}
?>
如果您需要更多详细信息,请发表评论,谢谢
答案 0 :(得分:2)
将参数转换为数组参数(例如qoh[]
),然后并行迭代,或手动解析查询字符串。
答案 1 :(得分:1)
您可以像$_SERVER['QUERY_STRING']
一样使用foreach
循环:
foreach($_SERVER['QUERY_STRING'] as $key => $value){
echo "$key - $value <br />";
}
通过这种方式,您可以使用foreach
循环以类似的方式获取GET的值并在数据库查询中使用。
答案 2 :(得分:1)
在某些值之后你有分号可能只应传递qoh
和qbuys
这个整数。
除此之外,您应该在整数值之前使用mysql_real_escape_string()和(int)来防止SQL注入,例如:
$int = (int)$_GET['price'];
$string = $_GET['val'];
mysql_real_escape_string($string);
此外,如果要传递多个值,则必须为它们使用数组:
HTML
<input type="hidden" name="ids[]" value="1">
<input type="hidden" name="ids[]" value="2">
<input type="hidden" name="ids[]" value="3">
PHP
$ids = $_GET['ids'];
foreach($ids as $id) {
$sql = 'UPDATE table SET field=? WHERE id='.(int)$id;
....
}
答案 3 :(得分:1)
我假设prod_table中的PID是整数类型。 $ id变量不包含“2;”而不是 2 ?无论如何,你得到了什么样的错误?
答案 4 :(得分:1)
让你的网址像
http://localhost/pos/php/checkout.php?ids[]=2&qoh[]=12&qbuys[]=&ids[]=6&qoh[]=2304&qbuys[]=304&ids[]=4&qoh[]=699&qbuys[]=99...
使用像infinity
这样的HTML结构指出。
然后:
foreach ($_GET['ids'] as $k => $v) {
$id = (int)$v;
$qtyhnd = (int)$_GET['qoh'][$k];
$qtytbuy = (int)$_GET['qbuys'][$k];
$left = $qtyhnd - $qtytbuy;
if ($qtyhnd >= $qtytbuy) {
$update = query_database(
"UPDATE prod_table SET QTYHAND='$left' WHERE PID='$id'",
"onstor",
$link);
}
}
如果QTYHAND
和PID
的数据库类型为int
,请从SQL查询中排除单引号('
)。