我很抱歉这个糟糕的头衔。
我试图创建一个脚本,用于记录每个会话在我的网站上的用户视图。
但是我想记录那些不使用cookie一次而不是多次的机器人,因为它们会有不同的会话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查询中使用吗?
答案 0 :(得分:1)
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)
答案 1 :(得分:0)
如果我理解,你只需要结合'和'条件和括号一样:
"SELECT id FROM vis_records WHERE (`time` >= :timeFrom AND sessionId = :sessionId) OR ip = :ip"