2010-05-14 25 views
29

嗨減少1行值我有一個MySQL數據庫表的「點」,用戶可以點擊一個按鈕和一個點應該從他們的帳戶中刪除,他們按下按鈕有另一個用戶的ID,因此他們的賬戶必須增加一個。增加和MySQL的

我有它在jQuery的工作,並在Firebug檢查可變因素/崗位,它發送正確的數據,如:

userid= 1 
posterid = 4 

我認爲這個問題是我的PHP頁面:

<?php 


include ('../functions.php'); 

$userid=mysql_real_escape_string($_POST['user_id']); 
$posterid=mysql_real_escape_string($_POST['poster_id']); 

if (loggedin()) 
{ 
include ('../connection.php'); 
$query1 = "UPDATE `points` SET `points` = `points` - 1 WHERE `userID` = '$userid'"; 
$result1=mysql_query($query1); 


$query2 = "UPDATE `points` SET `points` = `points` + 1 WHERE `userID` = '$posterid'"; 
$result2=mysql_query($query2); 


if ($result1 && result2) 
{ 
    echo "Successful"; 
    return 1; 
} 
else 
{ 

    echo mysql_error(); 
    return 0; 
} 
} 
?> 

任何想法?謝謝:)

+0

你忘了提問題本身 – 2010-05-14 14:28:52

+0

哦對不起葉,以及它不增加或減少該行......我測試了他們在mysql和他們很好地工作。 – Elliott 2010-05-14 14:29:41

+0

mysql_error()可以幫助找到我沒有得到一個錯誤 – 2010-05-14 14:30:23

回答

56

兩個查詢增加/減小字段值是不必要的:

的mysql_query( 「UPDATE SET表字段=字段+ 1 WHERE ID = $號碼」);

是,你可以看到旁邊一個完全有效的查詢:

mysql> describe points; 
+--------+---------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+--------+---------+------+-----+---------+-------+ 
| uid | int(11) | NO | PRI | NULL |  | 
| points | int(11) | YES |  | 0  |  | 
+--------+---------+------+-----+---------+-------+ 
2 rows in set (0.05 sec) 

mysql> insert into points VALUES (1,0),(2,0); 
Query OK, 2 rows affected (0.14 sec) 

mysql> select * from points; 
+-----+--------+ 
| uid | points | 
+-----+--------+ 
| 1 |  0 | 
| 2 |  0 | 
+-----+--------+ 
2 rows in set (0.05 sec) 

mysql> update points set points = points+1 where uid = 1; 
Query OK, 1 row affected (0.27 sec) 
Rows matched: 1 Changed: 1 Warnings: 0 

mysql> select * from points; 
+-----+--------+ 
| uid | points | 
+-----+--------+ 
| 1 |  1 | 
| 2 |  0 | 
+-----+--------+ 
2 rows in set (0.00 sec) 

有了這樣的測試,你確定你進入你的if (loggedin())條款?

我有KM同意,將是很好看的echo $query1;echo $query2;

+0

更新xyz,'SET Column = Column + n WHERE ...'是非常標準的SQL,我敢打賭,由於某種原因OPs sql字符串沒有按照他們想要的方式構建,因此建議顯示$ query1和$ QUERY2。我敢打賭,看到他們的內容後,問題就會變得明顯。 – 2010-05-14 18:43:54

+0

嗨,謝謝,每個查詢的回聲就像我上面寫的查詢一樣。 – Elliott 2010-05-14 19:21:09

+0

修正它,只是重新寫出來,似乎工作哈哈 謝謝 – Elliott 2010-05-14 19:30:57

2

嘗試添加的東西打印出您的實際的SQL命令時,if ($result1 && result2)前:

ECHO '$query1='.$query1.'<br>'; 
ECHO '$query2='.$query2.'<br>'; 

這將有助於瞭解它在發送到數據庫

4

輸出。這裏是例子查詢,通過我的測試,它的工作100%

$query="UPDATE table_name SET `hit_count`=(`hit_count`+1) WHERE `id` = '1'"; 
+4

歡迎使用stackoverflow。發佈前請務必閱讀以前的答案。因爲這與接受的答案基本相同。最好不要打擾古代線索,除非回答增加了以前答案中缺少的重要內容。 – Leigh 2012-05-03 01:51:13

+0

謝謝@Raj Kumar das – 2014-11-16 05:06:39

1

更新table_name的集COL_NAME = COL_NAME + 1,其中SQID = 12

但是,如果你的「COL_NAME」默認值爲null或空它永遠不會奏效,所以要確保COL_NAME默認值爲0或任何整數值。