Я делаю простой интернет-магазин, такой как программа. Что вы можете предположить, что я сделаю так, чтобы я мог перебирать входы, которые я сделал в своей программе.
Я все еще использую get, чтобы я мог видеть, как выглядят данные, я поменяю его, чтобы опубликовать его позже. Вот как выглядит URL-адрес, когда я совершаю покупку всех продуктов, добавленных в корзину: http: //localhost/pos/php/checkout.php? Ids = 2; & qoh = 12; & qbuys = & ids = 6; & QOH = 2304; & qbuys = 304 & DS = 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); } ?>
Прошу прокомментировать, если вам нужна дополнительная информация, спасибо
У вас есть точки с запятой после некоторых значений, возможно, вам нужно передать только целое число, это 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; .... }
Либо преобразуйте параметры в параметры массива (например, qoh[]
), а затем повторите параллель или вручную проанализируйте строку запроса.
Вы можете использовать $_SERVER['QUERY_STRING']
с циклом foreach
следующим образом:
foreach($_SERVER['QUERY_STRING'] as $key => $value){ echo "$key - $value <br />"; }
Таким образом вы можете получить значения GET и использовать в своем запросе базы данных аналогичным образом с использованием цикла foreach
.
Я предполагаю, что PID в prod_table имеет целочисленный тип. Не содержит переменную $ id "2;" вместо 2 ? В любом случае, какая у вас ошибка?
У вас есть URL-адрес, например http://localhost/pos/php/checkout.php?ids[]=2&qoh[]=12&qbuys[]=&ids[]=6&qoh[]=2304&qbuys[]=304&ids[]=4&qoh[]=699&qbuys[]=99...
с использованием структуры HTML, такой как infinity
.
Затем:
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-запросов.