MySQL - 检查是否存在,如果是更新 - 否则插入 - 没有唯一ID?

时间:2016-06-02 15:08:52

标签: php mysql

基本上,我在用户登录时会记录一个表,以及他们最新的IP。

为防止重复,我使用以下方法: screenshot

这在一定程度上工作正常。有时,或者实际上很多时候你可以垃圾邮件请求它记录两次,甚至两次以上。请求发送速度非常快,因此效果不佳。

我假设有一种加快速度的方法,就是有一个简单的SQL查询来搜索来执行此操作:

搜索用户名...如果存在,请更新IP。如果它不存在,请插入新列。

但是,我会怎么做?我不知道。大多数方法都使用“ON DUPLICATE KEY”,它不适用于text / blob。

非常感谢任何帮助。

代码:http://pastebin.com/xuFmgFp0

$result = $conpdo->prepare("SELECT * FROM `logs` WHERE `username` LIKE :username");
$result->execute(array(':username' => $_GET['username']));         
$info = $result->fetch(PDO::FETCH_ASSOC);

if(empty($info))
{
    $result = $conpdo->prepare("INSERT INTO `logs` (`id`, `ip`, `username`, `last_update`) VALUES (NULL, :ip, :username, '0000-00-00 00:00:00');");
    $result->execute(array(':username' => $_GET['username'], ':ip' => $_GET['ip']));  
}
else
{
    $result = $conpdo->prepare("UPDATE `logs` SET `ip` = :ip WHERE `logs`.`id` = :id");
    $result->execute(array(':ip' => $_GET['ip'], ':id' => $info['id']));       
}

0 个答案:

没有答案