Mik*_*der -1 php mysql codeigniter
只是出于好奇,因为它可以解决我的大多数问题,例如查询多个字段和比较多个表(意大利面纠缠).它有多安全?这是不好的做法还是没关系.如果没关系,在安全方面需要采取哪些预防措施.
问题在于3个表的关系:'用户','朋友'和'帖子'.
用户:
朋友:
帖子:
我在查询"朋友"TBL时遇到问题,因为有2个字段要比较"user_id1"和"user_id2",然后从"desc"顺序中拉出所有结果.帖子表一直是一个噩梦,或者我必须在mysql中真的生锈.我的快捷方式是,如果我可以为每个用户提供一个表/数据库,那么只有一个只有一个'friend_id'的朋友的表,会更简单我想.
意大利细面条:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
小智 5
不是一个好主意.随着数据库的增长,当您需要跨多个表进行搜索时,索引的速度并不快,因此最终会降低性能.
如果您最终需要获取大量用户信息(例如,您想要报告您拥有多少用户以及他们的电子邮件地址是什么),那么突然之间您就会join拥有大量表格(与您一样多的用户)拥有)或进行数百次查询.
最好将所有内容保存在较少的表中,并将数据逻辑地保存在一起,而不是将用户逻辑地保持在一起.
它看起来很诱人,但它的数据库设计很糟糕.
您需要了解数据库规范化. http://en.wikipedia.org/wiki/Database_normalization
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |