2014-05-15 2 views
0

내 코드로 수행하려는 작업과 비슷한 것을 찾는 데 어려움이 있습니다. mysql 데이터베이스에있는 변수의 각 인스턴스에 대해 실행되는 while 루프가 있습니다.사용자 정의 PHP 함수가 업데이트 된 변수를 반환하지 못합니다.

$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의 새로운 가치를 당기지 않는다. 나는 몇 가지를 원하는 내 나중에 while 루프 내에서 $ lqty의 업데이트 된 값을 사용하도록 코딩하십시오. 어딘가에서 리턴을 사용하면 도움이 될지 아니면 새 DB 값을 끌어 오기 위해 페이지를 다시로드하는 것이 더 쉬울까요?

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

을하고 함수의 끝에서 postcode()에서 $lqty를 반환 :

+0

http://www.php.net/manual/en/language.references.pass.php를 참조하십시오? 'return $ lqty;'를 사용하거나'$ lqty'를 참조 ('function postcode ($ partnum, & $ lqty)')해야합니다. 참조로 만들면 함수에서 업데이트 될 때 외부에서 업데이트됩니다. \ –

답변

0

function postcode($partnum,$lqty)

~

function postcode($partnum,&$lqty)

는`우편 번호()``$의 lqty`의 값을 업데이트하기를 기대하고있다

+0

가능한 경우 참조로 전달하지 마십시오. http://stackoverflow.com/questions/2157799/when-to-pass-by-reference-in-php –

+0

을 참조하십시오. 그러나 이것은 합리적인 경우처럼 보입니다. "while 루프 내에서 나중에 작성한 코드 중 일부가 $ lqty의 업데이트 된 값을 사용하기를 원합니다."라고 생각하게되었습니다. postcode 함수가 다른 코드에서 호출 된 경우 부작용을 일으킬 가능성이있는 값을 리턴합니다 (합리적인 경우). 그러나 요점. –

+0

참조로 전달하는 것이 제 상황에 이상적인 해결책 인 것 같습니다. 이 해결책이 효과가있어 크리스. – Trantis

1

사용이 라인은) (우편 번호를 호출 변경하려고

return $lqty; 
+0

제출 버튼을 사용하여 전체 페이지를 새로 고침했습니다. 이 코드가 추가 된 경우에도 값은 함수에서 반환되지 않습니다. – Trantis

+0

전체 페이지를 다시로드하는 경우'$ _POST '는 더 이상 설정되지 않으므로'$ lqty'는 업데이트되지 않습니다. –

+0

리로드의 첫 번째 인스턴스에서 제출이 다시로드를 일으킨다 고 가정하면 $ _POST가 설정되고 코드가 제대로 실행됩니다. 나는 PHP 함수가 isset이 사용될 때 값을 반환하는 데 어려움을 겪고있는 곳을 읽었다. – Trantis

관련 문제