Мне трудно найти что-то очень похожее на то, что я пытаюсь достичь с помощью своего кода. У меня есть цикл while, который выполняется для каждого экземпляра переменной, расположенной в базе данных mysql.

$lref = mysqli_query($con,"SELECT * FROM builtl");

while($lrow = mysqli_fetch_array($lref))
{
   //variables from builtl
   $partnum = $lrow['m3num'];
   $lqty = $lrow['qty'];
   //POST to DB
   postcode($partnum,$lqty);
   echo $lqty;
...//More code exists that is not part of the question

Пользовательская функция postcode () выполняется только тогда, когда установлена ​​кнопка отправки формы (исключена в примере кода). Ниже представлена ​​часть самой функции.

function postcode($partnum,$lqty)
{
    $bchk = $partnum."sb";
    if(isset($_POST[$bchk]))
    {
    //builtl
    $lqty=$lqty-1;
    $bltmod="UPDATE builtl SET qty=$lqty WHERE m3num=$partnum";
    if (!mysqli_query($con,$bltmod))
    {
    die('Error: ' . mysqli_error($con));
    }
    }
}

Когда код выполняется, база данных обновляется внутри функции, как и должна, но цикл while уже был сгенерирован и не извлекает новое значение $ lqty in. Я хочу, чтобы часть моего более позднего кода внутри цикла while была используйте обновленное значение $ lqty. Помогло бы мне с этим использование return where или было бы проще перезагрузить страницу, чтобы вывести новое значение DB?

0
Trantis 15 Май 2014 в 18:35

2 ответа

Лучший ответ

Попробуйте изменить

function postcode($partnum,$lqty)

К

function postcode($partnum,&$lqty)

См. http://www.php.net/manual/en/language. reference.pass.php

0
Chris Lear 15 Май 2014 в 14:40

Используйте эту строку для вызова postcode ():

$lqty = postcode($partnum,$lqty);

И вернуть $lqty из postcode() в конце функции:

return $lqty;
1
Quentin Skousen 15 Май 2014 в 14:39