我有一個名爲FLY的TABLE,我有一個名爲FLY_NUM.im的列,試圖在mysql查詢中(以PHP爲單位)減少此列的值。 是這樣的:如何「一列表減1」?
mysql_query("UPDATE fly SET `fly_Num` = `fly_Num` -1 WHERE fly_ID ='1' ");
這是錯誤的,每次這個查詢運行,FLY_NUM列設置爲zero.how我可以做這樣的事情?
我有一個名爲FLY的TABLE,我有一個名爲FLY_NUM.im的列,試圖在mysql查詢中(以PHP爲單位)減少此列的值。 是這樣的:如何「一列表減1」?
mysql_query("UPDATE fly SET `fly_Num` = `fly_Num` -1 WHERE fly_ID ='1' ");
這是錯誤的,每次這個查詢運行,FLY_NUM列設置爲zero.how我可以做這樣的事情?
您的查詢是有效和正確的。也不需要在-
和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
新表的內容:
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)
,如果你使用varchar
爲fly_num
列作品甚至:
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)
你能詳細說一下嗎?注意fly_Num和fly_ID不一樣。 – Sjoerd 2010-07-05 10:12:06
@Sjoerd:你說得對,我沒有注意到。我已經更新了我的答案。 – 2010-07-05 10:17:42
是的,我也是。 我運行它作爲一個SQL查詢在phpmyadmin,它工作正常,但在我的PHP查詢它將列設置爲零!!!!!! 我複製了我的代碼中的確切查詢! 什麼是問題? – 2010-07-05 10:23:21
的問題是在你的PHP代碼。
你在循環中運行它嗎?問這個問題的另一種方式是,當fly_num = 0時,你做什麼特別的代碼? Phpmyadmin使用與您的代碼相同的mysql連接器,所以問題必須在您的代碼中,而不是在您的查詢中。
注意:您的PHP的另一個可能的問題是,您包括文件多次。
每次它包括它會調用數據庫,並通過遞減1
不,我在單個文件中試過,只是做這個查詢! 但問題仍然是! 我發現了關於這個問題的新東西,每次這個查詢運行在我的php代碼中,它會減少3列!!!!!!! 我試過我的查詢,因爲這個:「...'fly_Num' ='fly_Num' -3 ...」 和我的價值下降了9倍。這意味着如果我有20在這個專欄,它變成了11! !!!!!!!!!!!!! 我的心在吹! – 2010-07-05 10:59:00
我已經更新了我的答案,因爲我認爲這可能更容易理解。 – Wes 2010-07-05 11:14:12
@armin:這顯然意味着你每次調用更新三次 – knittl 2010-07-20 09:29:40
您的查詢工作對我來說很好。也許還有別的錯誤。 – Sjoerd 2010-07-05 10:12:24
是在php循環中更新查詢嗎? – Lizard 2010-07-05 10:29:49
如果你仍然有這個問題,你可以粘貼你的實際代碼? – Wes 2010-08-07 16:29:19