Php Codeigniter:筛选和搜索表的正确方法
问题 我有老师、学生和班级的桌子,这就是学生桌子的样子 我需要能够搜索并过滤表格以找到学生。将有大约100名学生进行分类 我有一个有效的MVP,但我知道这是一个解决问题的坏方法 我尝试过的 流程是这样的Php Codeigniter:筛选和搜索表的正确方法,php,codeigniter,search,activerecord,filter,Php,Codeigniter,Search,Activerecord,Filter,问题 我有老师、学生和班级的桌子,这就是学生桌子的样子 我需要能够搜索并过滤表格以找到学生。将有大约100名学生进行分类 我有一个有效的MVP,但我知道这是一个解决问题的坏方法 我尝试过的 流程是这样的 默认情况下,当有人登录到所有学生的学生列表时 显示 然而,当有人进入搜索并点击“Go”时,表单会被删除 已提交回同一页。。。价值观在哪里 if/else语句 如果设置了字段,则会调用模型中的另一个方法,该方法使用两个参数,$field(要搜索的数据库列名)和$search要部分匹配的字符串 这
$field
(要搜索的数据库列名)和$search
要部分匹配的字符串<form class="form-inline" action="<?php echo base_url() . 'admin/students'; ?>" method="post">
<select class="form-control" name="field">
<option selected="selected" disabled="disabled" value="">Filter By</option>
<option value="first_name">First Name</option>
<option value="last_name">Last Name</option>
<option value="email">Email Name</option>
</select>
<input class="form-control" type="text" name="search" value="" placeholder="Search...">
<input class="btn btn-default" type="submit" name="filter" value="Go">
</form>
在学生模型中的getStudentsWhereLike()
方法中调用
public function getStudentsWhereLike($field, $search)
{
$sql = "
SELECT * FROM students
WHERE $field LIKE '%$search%'
ORDER BY `students`.`registered_at`
";
$query = $this->db->query($sql);
return $query->result();
}
问题
这是解决问题的正确方法吗?我知道$this->db->query($sql)
方法容易受到sql攻击,因此我将清理输入,但我感兴趣的是,是否有更好、更灵活、标准化的方法来使用Codeigniter筛选/搜索表。请改用Codeigniter:
改用Codeigniter:
也许是离题的,但是对于少量的数据,像这样我喜欢使用DataTables jQuery插件,搜索/筛选是非常好的。也许是离题的,但是对于少量的数据,像这样我喜欢使用DataTables jQuery插件,搜索/筛选是非常好的。这是否能够部分匹配这些值,例如,如果我输入'joh',它将找到john和johnny?是的,
$this->db->like
有3个参数,第三个参数是可选的,并在之前(%match
)、之后(match%
)和这两个参数(%match%
)默认值是两个
这是否能够部分匹配值,例如,如果我输入'joh',它将找到john和johnny?是的,$this->db->like
有3个参数,第三个参数是可选的,在之前取值(%match
),之后取值(匹配%
)和两者都取值
(%match%
)和默认值均为
public function getStudentsWhereLike($field, $search)
{
$sql = "
SELECT * FROM students
WHERE $field LIKE '%$search%'
ORDER BY `students`.`registered_at`
";
$query = $this->db->query($sql);
return $query->result();
}
public function getStudentsWhereLike($field, $search)
{
$query = $this->db->like($field, $search)->orderBy('registered_at')->get('students');
return $query->result();
}