Php 为每个注册网站的用户动态创建一个DB表,这可能是一个解决方案吗?
只是出于好奇,因为它可以解决我的大多数问题,比如查询多个字段和比较多个表——意大利面条缠结。 它有多安全?这是坏习惯还是好习惯。如果可以的话,在安全方面应该采取哪些预防措施 问题在于三个表的关系:“用户”、“朋友”和“帖子” 用户: 身份证件 名称 姓氏 电子邮件 等 朋友们: 伊迪特 用户ID 1int userid2int 友谊是你所要求的 接受的varchar 阻塞整数 阻塞比因 结交 职位: 邮递 用户标识 后置文本; 等 我在查询“friends”TBL时遇到问题,无法获取与登录用户为好友的用户ID,因为有两个字段可以比较“user_id1”和“user_id2”,然后从posts表中按desc”顺序提取所有结果是一场噩梦,否则我肯定对mysql非常生疏。我的快捷方式是,如果我可以为每个用户提供一个table/db,那么只有一个“friend_id”的朋友就只有一个table,我想这会简单得多 意大利面:Php 为每个注册网站的用户动态创建一个DB表,这可能是一个解决方案吗?,php,mysql,codeigniter,Php,Mysql,Codeigniter,只是出于好奇,因为它可以解决我的大多数问题,比如查询多个字段和比较多个表——意大利面条缠结。 它有多安全?这是坏习惯还是好习惯。如果可以的话,在安全方面应该采取哪些预防措施 问题在于三个表的关系:“用户”、“朋友”和“帖子” 用户: 身份证件 名称 姓氏 电子邮件 等 朋友们: 伊迪特 用户ID 1int userid2int 友谊是你所要求的 接受的varchar 阻塞整数 阻塞比因 结交 职位: 邮递 用户标识 后置文本; 等 我在查询“friends”TBL时遇到问题,无法获取与登录用户为
function getPosts($email){
$myid = $this->getStudentId($email);
$sql = "SELECT DISTINCT user_id1 FROM friends
UNION
SELECT DISTINCT user_id2 FROM friends
WHERE (user_id1 = ? AND accepted = ? AND blocked = ?)
OR (user_id2 = ? AND accepted = ? AND blocked = ?)";
$query = $this->db->query($sql,array($myid,'yes','no',$myid,'yes','no'));
if($query->num_rows() > 0){
foreach ($query->result() as $r){
//echo "<br>my id1: ".$student_id1;
echo "<br> rows : ". $query->num_rows;
echo "<br> Amigos : ". $r->user_id1;
echo "<br> Amigos : ". $r->user_id2;
return $this->getPostByStudentId($r->user_id1,$r->user_id2);
}
}
}
function getPostByStudentId($student_id1,$student_id2){
$this->db->where('user_id',$student_id1);
$this->db->where('user_id',$student_id2);
$this->db->order_by('post_id','desc');
$sql = $this->db->get('posts');
if($sql->num_rows() > 0){
return $sql->result();
}
}
提前谢谢。这不是个好主意。随着数据库的增长,性能会越来越慢,因为在需要跨多个表进行搜索时,索引速度会越来越慢 例如,如果你最终需要获取大量的用户信息,你需要一份关于你有多少用户以及他们的电子邮件地址的报告,那么突然之间,你将大量的表连接到一起,或者进行数百次查询 最好将所有内容保存在较少的表中,并将数据逻辑地保存在一起,而不是将用户逻辑地保存在一起 这看起来很诱人,但数据库设计很差 您需要了解数据库规范化。
问题在于Friends表的交互性质。如果Bob UserID1是Jim UserID2的朋友,那么您是否还应该拥有JimUserID1是BobUserID2的朋友的其他记录。现在您有两条记录,但至少不必从两个字段中选择distinct
我将重构数据库并替换friends表为frendship表,删除userID,然后创建一个user\u友谊桥接表,其中包含userID和FrienshipID。然后,您只需要查询桥接表就可以找到单个用户的所有友谊。大多数数据库都限制了它可以是多少个表。为什么要这样做?没有明显的优势。非常糟糕的做法,规范化你的数据。这是一个很难问的问题,因为它涉及到意见。@Lashane这是一个大学的项目,所以它将是每个学生的表格。我知道这听起来很糟糕,哈哈。但我感觉有点累了,这似乎是一个更简单的解决方案。对,它起作用了,我使用了一个连接查询并连接了3个表。现在,我只需要将登录查询的用户也包括在内。非常感谢你的帮助D