我有一个名为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