首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mysql查询作为条件

使用mysql查询作为条件
EN

Stack Overflow用户
提问于 2013-01-26 17:52:48
回答 3查看 105关注 0票数 0

我在mySQL数据库中有一个表,我在其中放了一个使用php从android应用程序中检索到的值。现在这个值是一个UniqueID,所以我对它进行了统计,这样我就可以知道我的应用程序被访问了多少次。当新的UniqueID到达时,会使用count=1将其添加到数据库中,而当现有的UniqueID退役时,其计数只会递增。我多次尝试我的php脚本,但都没有成功。我附上我的php脚本作为参考。

代码语言:javascript
复制
<?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!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-26 18:00:13

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

代码语言:javascript
复制
$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
EN

Stack Overflow用户

发布于 2013-01-26 18:18:02

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

要做的第一件事是在列userid上定义一个UNIQUE约束(如果它是主键,那么跳过这一步),

代码语言:javascript
复制
ALTER TABLE uniqueid ADD CONSTRAINT tb_uq UNIQUE (userid)

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

这上面不会有SELECT和其他IF

代码语言:javascript
复制
INSERT INTO UNIQUEID (userID `count`, date)
VALUES ('idHere', 0, NOW())
ON DUPLICATE KEY 
UPDATE `count` = `count` + 1;

  • INSERT ... ON DUPLICATE KEY UPDATE Syntax
票数 3
EN

Stack Overflow用户

发布于 2013-01-26 18:00:24

看看if($result=$n)这一行--这永远不会起作用。部分比较运算符是==,而不是=,而且结果字符串由查询结果组成,而不是单个值。

将该行替换为:

代码语言:javascript
复制
if (mysql_num_rows($result)===1)  

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14535766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档