2010-07-05 5 views
0

나는 FLY라는 테이블을 가지고 있는데, FLY_NUM.im이라는 이름의 열에 PHP의 mysql 쿼리에서이 열의 값을 줄이려고합니다. 이 같은 뭔가가! 잘못 때마다이 쿼리 실행, FLY_NUM 열 내가 그런 일을 할 수 zero.how로 설정"테이블의 한 열 빼기"방법?

mysql_query("UPDATE fly SET `fly_Num` = `fly_Num` -1 WHERE fly_ID ='1' "); 

이있다?

+0

쿼리가 제대로 작동합니다. 어쩌면 뭔가 다른 것이있을 수 있습니다. – Sjoerd

+1

PHP 루프에서 업데이트 쿼리가 있습니까? – Lizard

+0

이 문제가 계속되는 경우 실제 코드를 붙여 넣을 수 있습니까? – Wes

답변

5

귀하의 질의가 올 바르고 정확합니다. -1 사이에 공백을 둘 필요도 없습니다.

테스트 케이스 :

CREATE TABLE fly (fly_id int, fly_num int); 

INSERT INTO fly VALUES (1, 1); 
INSERT INTO fly VALUES (1, 2); 
INSERT INTO fly VALUES (1, 3); 
INSERT INTO fly VALUES (1, 4); 
INSERT INTO fly VALUES (1, 5); 
INSERT INTO fly VALUES (1, 6); 
INSERT INTO fly VALUES (1, 7); 

업데이트 쿼리 :

UPDATE fly SET `fly_Num` = `fly_Num` -1 WHERE fly_id ='1'; 

Query OK, 7 rows affected (0.00 sec) 
Rows matched: 7 Changed: 7 Warnings: 0 

새로운 테이블 내용 : 당신이 fly_num 열에 대한 varchar를 사용하는 경우

SELECT * FROM fly; 

+--------+---------+ 
| fly_id | fly_num | 
+--------+---------+ 
|  1 |  0 | 
|  1 |  1 | 
|  1 |  2 | 
|  1 |  3 | 
|  1 |  4 | 
|  1 |  5 | 
|  1 |  6 | 
+--------+---------+ 
7 rows in set (0.00 sec) 

그것도 작동합니다

CREATE TABLE fly (fly_id int, fly_num varchar(10)); 

INSERT INTO fly VALUES (1, '1'); 
INSERT INTO fly VALUES (1, '2'); 
INSERT INTO fly VALUES (1, '3'); 
INSERT INTO fly VALUES (1, '4'); 
INSERT INTO fly VALUES (1, '5'); 
INSERT INTO fly VALUES (1, '6'); 
INSERT INTO fly VALUES (1, '7'); 

업데이트 쿼리 :

UPDATE fly SET `fly_Num` = `fly_Num` -1 WHERE fly_id ='1'; 

Query OK, 7 rows affected (0.00 sec) 
Rows matched: 7 Changed: 7 Warnings: 0 

새로운 테이블 내용 :

SELECT * FROM fly; 

+--------+---------+ 
| fly_id | fly_num | 
+--------+---------+ 
|  1 |  0 | 
|  1 |  1 | 
|  1 |  2 | 
|  1 |  3 | 
|  1 |  4 | 
|  1 |  5 | 
|  1 |  6 | 
+--------+---------+ 
7 rows in set (0.00 sec) 
+0

당신은 정교 할 수 있습니까? fly_Num과 fly_ID는 같지 않습니다. – Sjoerd

+0

@Sjoerd : 네 말이 맞다. 나는 눈치 채지 못했다. 내 대답을 업데이트했습니다. –

+0

네 친구, 나도 그랬어. phpmyadmin에서 sql 쿼리로 실행하면 정상적으로 작동하지만 PHP 쿼리에서 열을 0으로 설정합니다 !!!!!! 정확한 코드가 내 코드에 복사되었습니다. 무엇이 문제입니까?! –

1

문제는 PHP 코드입니다.

루프를 실행하고 있습니까? 이 질문을하는 또 다른 방법은 fly_num = 0 일 때 코드에서 특별한 것을해야합니까? Phpmyadmin은 코드와 동일한 mysql 커넥터를 사용하므로 쿼리에없는 코드에 문제가 있어야합니다.

참고 : PHP에서 또 다른 문제는 번을 번으로 포함한다는 것입니다.

포함될 때마다 데이터베이스를 호출하고 1 씩 감소합니다.

+0

아니, 나는이 파일을 하나의 파일에서 시험해 보았다. 하지만 문제는 여전히 있습니다 !!! 이 문제에 대한 새로운 점을 발견했습니다.이 쿼리가 PHP 코드에서 실행될 때마다 3 씩 줄을 긋습니다 !!!!!!! "...'fly_Num' ='fly_Num' -3 ..." 그리고 내 값이 9 번 줄었습니다.이 열에 20이 있으면 11로 바뀌 었습니다. !!!!!!!!!!!!! 내 마음이 불고있다 !!! –

+1

이해하기가 더 쉽다고 생각하여 답변을 업데이트했습니다. – Wes

+0

@armin : 이는 당연히 id 당 3 번 업데이트를 호출한다는 의미입니다. – knittl

관련 문제