我有一个名为FLY的TABLE,我有一个名为FLY_NUM.im的列,试图在mysql查询中减少此列的值(在PHP中)。 像这样的东西:
mysql_query("UPDATE fly SET `fly_Num` = `fly_Num` -1 WHERE fly_ID ='1' ");
这是错误的!每次运行此查询时,FLY_NUM列设置为零。我可以做这样的事情吗?
答案 0 :(得分: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
新表格内容:
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)
答案 1 :(得分:1)
问题在于您的PHP代码。
你是在循环中运行吗?另一种问题是你在fly_num = 0时对代码做了什么特别的事情吗? Phpmyadmin使用与您编码相同的mysql连接器,因此问题必须在您的代码中,而不是在您的查询中。
注意: PHP中的另一个可能的问题是您将文件多次包含。
每次包含它都会调用数据库并减1。