2017-01-26 1 views
1

내가 http://imgur.com/a/CXuJX확인 개별 MySQL의 테이블 행 만 그들에 함수를 적용이

나는 다음 턴을 처리하기 위해 실행하는 PHP 파일을 실행할 때마다 (ID 차이) 다른 사용자와 테이블이,이이 특정 테이블을 갱신하는 코드의 일부 : - 'residenceTurns'열

$get_turn_update = mysqli_query($connect, "SELECT * FROM turn_update") or die (mysqli_error($connect)); 
while ($user_turn_update = mysqli_fetch_assoc($get_turn_update)) { 
    if ($user_turn_update['residenceTurns'] > 0) { 
     $residencesBuilt = ceil($user_turn_update['residence']/$user_turn_update['residenceTurns']); 
     $residences_turn_update = mysqli_query($connect, "UPDATE turn_update SET residenceTurns = residenceTurns - 1") or die (mysqli_error($connect)); 
     $residences_update = mysqli_query($connect, "UPDATE turn_update SET residence = residence - '".$residencesBuilt."'") or die (mysqli_error($connect)); 
     $residences_built_update = mysqli_query($connect, "UPDATE buildings SET residence = residence + '".$residencesBuilt."'") or die (mysqli_error($connect)); 
    } 
} 

기본적으로 '거주'열 나머지 회전에 걸쳐 건설 될 예정 주택의 양입니다.

문제는 예를 들어 ID가 3 인 사용자가 자신의 집을 "빌드"하고 residenceTurns를 1 씩 감소시킬 때 다른 사용자 (이 경우 ID는 4) 건설중인 주택은 같은 금액의 제거 (-1) 및 거주 금액 (해당 금액에 따라 다름)을 얻습니다.

예를 들면 그래서

, 우리는 매개 변수와 함께 시작하는 경우 :

  • ID | 거주 | residenceTurns
  • 3 | 10 | 2
  • 4 | 0 | 0

1 회전에서 우리가

  • ID를해야합니다 | 거주 | residenceTurns
  • 3 | 5 | 1
  • 4 | -5 | | -1 2

우리가

  • ID를해야합니다집니다 거주 | residenceTurns
  • 3 | 0 | 0
  • 4 | -10 | -2

내가 필요한 것은 행 (사용자)이 건물의 양을 소유하고 있고 그 사람에게만 영향을주고 모든 사용자에 대해 개별적으로 처리되는 것입니다. 당신은 당신의 UPDATE 문에 WHERE 절을 사용하지 않는

답변

4

따라서, 당신은 때마다 전체 테이블을 업데이트하는, 감사합니다. 같은 같은 WHERE 절을 제공하여 특정 거주지 쿼리 제한 :

내 전화에있어
UPDATE residence SET turns = turns - 1 WHERE id = residence['id'] 

,이 의사 코드입니다,하지만 당신을 도움이 될 것입니다.

+1

... 또한 첫 번째'SELECT'에서'whereerenceTurns> 0'을 추가하면 루프의 if 문이 필요 없다는 것을 의미합니다. –

+0

잘 작동합니다! 도와 주셔서 감사합니다 :) – Romtim

+0

Magnus, 그 통찰력에 감사드립니다. 내가 집을 지키기 만하면 효과가있을 수 있지만 while 루프 안에는 20 개의 if 문이 실제로 따라옵니다. 그것들은 모두 동일하고, 단지 다른 건물들과 각각의 차례입니다. 이 사건에 대한 제안을 해 주시겠습니까? 이 jsfiddle - https : // jsfiddle에 코드 예를 저장했습니다.net/5yvcurmv/ – Romtim