使用mysql查询作为条件

时间:2013-01-26 09:52:48

标签: php mysql sql

我在mySQL数据库中有一个表,我使用php放置从android应用程序检索的值。 现在值是一个UniqueID,所以我保留了它的数量,以便我可以知道我的应用程序访问了多少次。 当一个新的UniqueID到达时,它将被添加到count = 1的数据库中,当一个现有的UniqueID被撤消时,它的计数就会递增。 我多次尝试我的PHP脚本,但没有运气。我附上我的PHP脚本供参考。

<?php


ini_set('default_charset', 'utf-8');
header('Content-Type: text/html; charset=UTF-8');
$n=$_POST['UniqueID'];  
$count=1;  
$Today=date("F j, Y, g:i a");

mysql_connect("localhost","root","");  
mysql_select_db("farm-o-pedia");

$con="select userid from uniqueid";  
$result=mysql_query($con) or die(mysql_error());  
if($result=$n)  
{  

$upd="update uniqueid set count=count+1 where userid=$n";  
$result=mysql_query($upd) or die(mysql_error());  
}  
else  {  
$que="insert into uniqueid (userid,count,date) values($n,\"$count\",\"$Today\")";    
$sql=mysql_query($que) or die(mysql_error());  
}

mysql_close();
?>

任何帮助都将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:3)

另一种方法是利用MySQL的ON DUPLICATE KEY UPDATE

要做的第一件事是在列UNIQUE上定义userid约束(如果它是PRIMARY KEY,则跳过此步骤。),

ALTER TABLE uniqueid ADD CONSTRAINT tb_uq UNIQUE (userid)

执行查询后,ON DUPLICATE KEY UPDATE现在就可以正常工作了。

您将没有SELECT和其他IF

INSERT INTO UNIQUEID (userID `count`, date)
VALUES ('idHere', 0, NOW())
ON DUPLICATE KEY 
UPDATE `count` = `count` + 1;

答案 1 :(得分:2)

mysql_query返回结果集,而不是单个结果,因此:

$con="select userid from uniqueid";  
$result=mysql_query($con) or die(mysql_error());  
if($row=mysql_fetch_assoc($result)) { //if a row is found in resultset, then you already have this id in your table
    $upd="update uniqueid set count=count+1 where userid=$n";  
    $result=mysql_query($upd) or die(mysql_error());  
} else {  
    $que="insert into uniqueid (userid,count,date) values($n,\"$count\",\"$Today\")";    
    $sql=mysql_query($que) or die(mysql_error());  
}

此外,您应该开始使用mysqli函数而不是mysql,因为不推荐使用mysql

答案 2 :(得分:2)

查看if($result=$n)行 - 这将永远不会奏效。部分比较运算符是==而不是=,结果字符串也包含查询结果而不是单个值。

将该行替换为:

if (mysql_num_rows($result)===1)  

其次,你应该真正考虑转义你的查询,并且最好从使用弃用的mysql_ *函数转换为PDO或mysqli。