mysql/php增加数字或插入无效

mysql/php增加数字或插入无效,php,mysql,datatable,count,Php,Mysql,Datatable,Count,我有以下代码: $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("I

我有以下代码:

$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());    
}
我有表格
单词

+--------+--------+-- -----+
|keyword |number  |date    |
+--------------------------+
|one     |1       |01-01-01|
+--------------------------+
$q
1
时,数字随1增加 但是当
$q
这个词出现时,什么也不会发生。我希望当
$q
不在关键字列表中时,注册,如果
$q
在关键字列中,则数字随1增加。“如果这个词存在”行得通,但“如果它不存在”行不通。。。。
请帮忙!谢谢

假设
关键字
是表的主键,您可以在一次查询中完成:

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

假设
关键字
是表的主键,您可以在一个查询中执行此操作:

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


$results
只有在出现阻止第一个查询运行的错误时才会为false。找不到任何匹配的行不是错误。使用
mysql\u num\u rows()
查找找到的行数。感谢您的建议,我会尝试!
关键字
字段上是否有唯一索引?如果是这样,您可以使用
INSERT
ON DUPLICATE KEY
选项。您可以使用
NOW()
代替
“$d”
。如果没有任何行匹配,$row_num将为0?
$results
只有在出现阻止第一个查询运行的错误时才会为false。找不到任何匹配的行不是错误。使用
mysql\u num\u rows()
查找找到的行数。感谢您的建议,我会尝试!
关键字
字段上是否有唯一索引?如果是这样,您可以使用
INSERT
ON DUPLICATE KEY
选项。您可以使用
NOW()
代替
'$d'
。如果没有任何行匹配,$row_num将为0?我使用的是phpmyadmin,当我尝试将其设为主键时,出现此错误:
\1170-在键规范中使用的BLOB/TEXT列“keyword”没有键长度
不要使用TEXT,使用varchar。在文本列上使用索引有一些限制。我把它改为varchar,但现在它说:这不是一个数字。定义char或varchar列时,必须指定最大大小,例如
varchar(32)
我使用的是phpmyadmin,当我尝试将其设置为主键时,我遇到了这个错误:
#1170-在键规范中使用的BLOB/TEXT列“keyword”没有键长度
不要使用TEXT,使用varchar。在文本列上使用索引有一些限制。我把它改为varchar,但现在它说:这不是一个数字。定义char或varchar列时,必须指定最大大小,例如
varchar(32)