0

我在 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();
?>

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

4

3 回答 3

3

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

首先要做的是UNIQUE在列上定义一个约束userid如果它是 PRIMARY KEY 则跳过这一步。),

ALTER TABLE uniqueid ADD CONSTRAINT tb_uq UNIQUE (userid)

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

你将有 noSELECT和 other IF

INSERT INTO UNIQUEID (userID `count`, date)
VALUES ('idHere', 0, NOW())
ON DUPLICATE KEY 
UPDATE `count` = `count` + 1;
于 2013-01-26T10:18:01.640 回答
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 函数

于 2013-01-26T10:00:13.443 回答
2

看看这条线if($result=$n)——这永远行不通。部分比较运算符==也不=是结果字符串由查询结果而不是单个值组成。

将行替换为:

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

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

于 2013-01-26T10:00:23.963 回答