2013-08-26 40 views
1

我有這樣的代碼:的MySQL/PHP的數量增加或插入不工作

$q = $_GET['q']; 
$results= mysql_query("SELECT number FROM words WHERE keyword='$q'") or 

die(mysql_error());; 
if($results){ 
mysql_query("UPDATE words SET number = number + 1 WHERE keyword='$q'") or die(mysql_error()); 
} 
else{ 
mysql_query("INSERT INTO words VALUES ('$q', '1', '$d')") or die(mysql_error());  
} 

,我有表words

+--------+--------+-- -----+ 
|keyword |number |date | 
+--------------------------+ 
|one  |1  |01-01-01| 
+--------------------------+ 

$qone數量與1 但是,當增加$q其他詞沒有任何反應。我想當$q不在關鍵字列表中時,要註冊,並且如果$q在關鍵字列中,則數字將以1增加。「如果該詞存在」有效,但「如果不存在」不起作用。 ... 請幫忙!謝謝!

+0

'$ results'只會是假的,如果有防止第一查詢運行錯誤。找不到任何匹配的行不是錯誤。使用'mysql_num_rows()'找出找到了多少行。 – Barmar

+0

感謝您的建議,我會盡力! – artur99

+0

在'keyword'字段中是否有唯一索引?如果是這樣,你可以在'ON DUPLICATE KEY'選項中使用'INSERT'。 – Barmar

回答

4

假設keyword是表的主鍵,你可以做一個查詢:

INSERT INTO words (keyword, number, date) 
VALUES ('$q', 1, '$d') 
ON DUPLICATE KEY UPDATE number = number + 1 
+0

我使用phpmyadmin,當我嘗試使它成爲主鍵時出現此錯誤:'#1170 - BLOB/TEXT column'keyword'密鑰長度' – artur99

+0

不要使用文本,使用varchar。在文本列上使用索引是有限制的。 – Barmar

+0

我做了varchar,但現在說:這不是數字 – artur99