2014-09-26 3 views
0

여러 행을 업데이트하는 데 문제가 있습니다. 내가 뭘하려고하는지의 의도는 카운터를 하나씩 증가시키는 공통 변수를 공유하는 모든 행을 업데이트하는 것입니다.단일 쿼리에서 여러 행 업데이트

$query = "SELECT * FROM `Inventory` WHERE (rep='Bob')"; 
    $result = mysql_query($query) or die; 
    $data=mysql_fetch_array($result); 
    $onhand=$data[onhand]; 
:

table name: Inventory 

id item rep onhand 
1 Screw Bob 1 
2 Bolt Paul 3 
3 Nail Bob 4 
4 Brace Jen 2 
5 Glue Bob 12 

는 내가 뭘하려고 오전 밥 1.

에 의해 셀렉트 쿼리 증가를위한 - 남은 모두를 얻을 수 있습니다 :

표는 다음과 같이 보입니다

업데이트 쿼리 :

$query = "UPDATE `Inventory` SET onhand=($onhand+1) WHERE (rep='Bob')"; 
        $result = mysql_query($query) or die; 

나사가 실제로 2로 업데이트되지만 Bob에 연결된 다른 모든 플레이어도 값 +1이 아닌 값 2로 업데이트됩니다. 무슨 일이 벌어지고 있는지는 프리스트 레코드 (id # 1)에서 발견 된 첫 번째 값을 취하고 Bob이 해당 값을 가진 다른 모든 레코드를 업데이트하는 것입니다.

어떻게 해결할 수 있습니까?

답변

1

이 시도 : 당신이 정말 원하는 것은 선택이 문제가 해결 제거하는 것을 제안 1.

+0

응답 해 주셔서 감사합니다. 나는 그것을 시도하고 그것은 첫 번째 행에 대한 새로운 값을 모두 변경합니다. –

+0

좋아,이 밑바닥까지 가서 고정 시키자. 1) 선택은 전혀 필요하지 않습니다. 그걸 제거하십시오. 2) 올바른 SQL 업데이트 문을 가진 최신 코드로 질문을 업데이트하십시오. 그러면 살펴 보겠습니다. –

+0

좋아, 내가이 줄을 바꾼 선택을 지울 때 : $ query = "UPDATE'Inventory' onhand = ($ onhand + 1) WHERE (rep = 'Bob')"; to $ query = "UPDATE'Inventory' onhand = (onhand + 1) WHERE (rep = 'Bob')";
및 모든 것이 효과를 보았습니다. 도움을 주셔서 감사합니다. :) –

0

로로 - 남은 증가하는 것입니다

UPDATE Inventory SET onhand=onhand+1 WHERE rep='Bob' 

. 이 줄을 변경했습니다 : $ query = "UPDATE Inventory SET onhand = ($ onhand + 1) WHERE (rep = 'Bob')"; to $ query = "UPDATE 인벤토리 SET onhand = (onhand + 1) WHERE (rep = 'Bob')"; Peter Pei Guo가 돈에 딱 들어 맞았습니다.

관련 문제