2011-04-17 131 views
0

我向网站添加了一项功能,显示访问者访问过用户配置文件的内容。代表此用户的表格包含用户个人资料的ID和访问个人资料的用户的ID。检查两个ID是否相同

显然,这是毫无意义的,表明有人访问了他们自己的配置文件,所以我修改了PHP代码来检测这个。同时,写了一些数据。这不是问题,因为它仅代表少数用户,我可以手动编辑信息。

我的问题如下。在假设情况下,我必须为更多数据做同样的事情,找到id1 = id2的行并删除它们的好方法是什么?

回答

3
DELETE 
    FROM table 
WHERE id1 = id2; 
+0

谢谢Ronnis。与harakiri的回复相同的评论:) – 2011-04-17 21:54:42

2
DELETE FROM `profiletracking` WHERE `visitor_id` = `profile_id`; 
+0

谢谢harakiri。我喜欢单线的答案。我忘记了可以象征性地使用字段名称。 – 2011-04-17 21:54:11

1

如果您需要将其删除,切腹的查询是好的,但我有一个问题,为什么摆在首位添加一条记录?及时你的网站可能变得更大,事情可能会变得复杂。

我建议你不要首先将它记录到数据库中。您只需做更多的操作和查询,而方法更简便。

<?php 
// Get ID of profile owner; 
/* do your query here */ 
if ($_SESSION['id'] != $profileOwner['user_id']) { 
// add it to your database 
} 
?> 

我相信这样的做法是更优雅的和有用的,考虑到在未来您的网站可能会变得更大,你可能需要再次检查你的代码。

请不要忘记这样的事情可能会令人头疼。这对程序员来说是一个致命的错误。在开始时,许多人认为,现在可以这样做,为什么打扰编码更多?及时你会添加越来越多的代码,以后你可能会迷失自我。一旦你的访问者/客户开始抱怨打开缓慢的页面,最终会导致错误的编码,那就太迟了。

+0

嗨Pixeler。你提出一个很好的问题。保留ID的原因是显示已访问配置文件的用户。为了限制每个数据,只有一个profile_id/visitor_id对,并且只有记录存在时更新时间戳。在PHP中,我在$ ownprofile上添加了一个检查来避免额外的查询。现在想一想,它可能会产生大量的排列。我会就此另外添加一个问题。 – 2011-04-17 23:56:31

+0

@James P.我仍然看到保留配置文件所有者的记录是更多的web服务器的工作。如果记录存在,如果不创建新记录(如果它不是配置文件所有者),您仍然可以更新。既然你只需要id,那么使用查询来获取成员的“id”会让你的服务器承受一些工作负担,考虑到这样的社会项目等,需要相当大的成员表。大型项目在编码时需要额外注意。如果你不遵守你的密码,你可能会遇到很多麻烦。对于初学者来说,由于更多的动作/变量/数组等等,你会使用更多的内存。 – Revenant 2011-04-18 00:09:58