很抱歉标题不好。
我正在尝试创建一个脚本来记录用户每次 session 在我的网站上的查看情况。
但我想记录不使用 cookie 一次而不是多次的机器人,因为它们将具有不同的 session ID,
我当前的代码是
$getRecords = $this->dbCon->prepare("SELECT id FROM vis_records WHERE `time` >= :timeFrom AND sessionId = :sessionId OR ip = :ip");
$getRecords -> bindValue(':timeFrom',time()-(60*30)); // Only Search Records from the last 30 min
$getRecords -> bindValue(':sessionId',self::getSessionId());
$getRecords -> bindValue(':ip',self::getCurIp());
但是该代码的问题是,。
如果 mysql 找到匹配的 sessionId 或 ip,它会给我一个匹配的行。
我想做的是 如果mysql找到匹配的sessionid,则返回该行如果Mysql找不到匹配的sessionId,则尝试查找匹配的ip..
可以直接在 mysql 查询中吗?
最佳答案
SELECT id FROM vis_records WHERE `time` >= :timeFrom AND
sessionId = :sessionId
UNION ALL
SELECT id FROM vis_records WHERE `time` >= :timeFrom AND
ip = :ip AND
NOT EXISTS
(SELECT id FROM vis_records WHERE `time` >= :timeFrom AND
sessionId = :sessionId)
关于php - WHERE sessionId = session 或 IF NOT MATCHING WHERE this is this。数据库管理系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21607534/