我在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();
?>任何帮助都是appreciated.Thanks!
发布于 2013-01-26 18:00:13
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-26 18:18:02
另一种方法是利用MySQL的ON DUPLICATE KEY UPDATE
要做的第一件事是在列userid上定义一个UNIQUE约束(如果它是主键,那么跳过这一步),
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;发布于 2013-01-26 18:00:24
看看if($result=$n)这一行--这永远不会起作用。部分比较运算符是==,而不是=,而且结果字符串由查询结果组成,而不是单个值。
将该行替换为:
if (mysql_num_rows($result)===1) 其次,您应该真正考虑转义您的查询,最好从使用过时的mysql_*函数改为使用PDO或mysqli。
https://stackoverflow.com/questions/14535766
复制相似问题