gpt4 book ai didi

php - 在php中比较mysql数据库表值

转载 作者:行者123 更新时间:2023-11-29 13:43:49 24 4
gpt4 key购买 nike

我在底部添加了数据库结构

我正在为招聘机构制作一个排名系统。我在不同的表中捕获所有申请人的详细信息,并通过将数据库中的候选人数据与 job_advert 表中的职位进行比较来对它们进行排名(如果它们符合特定招聘广告的需求/要求)。然后显示排名最高(合格)的 10 名候选人的列表,系统将向他们发送通知,表明他们有资格胜任该职位。

我从数据库中获取候选人数据,如下所示:

class ranking_model extends CI_Model {

function __construct() {
parent::__construct();
}

function age() {
$sql = "SELECT * FROM membership";
$query = $this->db->query($sql)->result();
foreach ($query as $row) {
$id = $row->id_number;
$dobs = substr($id, 0, 6);
$dob = str_split($dobs, 2);
$day = date('d', mktime(0, 0, 0, 0, $dob[2], 0));
$month = date('m', mktime(0, 0, 0, $dob[1] + 1, 0, 0));
$year = date('o', mktime(0, 0, 0, 0, 0, $dob[0] + 1));
$date = "$day/$month/$year";
//explode the date to get month, day and year
$date = explode("/", $date);
//get age from date or birthdate
$age = (date("md", date("U", mktime(0, 0, 0, $date[0], $date[1], $date[2]))) > date("md") ? ((date("Y") - $date[2]) - 1) : (date("Y") - $date[2]));
}
return $age;
}

function job_experience() {
$sql = "SELECT * FROM job_list
JOIN job_history
ON job_list.job_history_id = job_history.job_history_id";
$query = $this->db->query($sql)->result();

foreach ($query as $row) {
$start = $row->start_date;
$end = $row->end_date;

// //explode the date to get month, day and year
$start = explode("-", $start);
$end = explode("-", $end);
// //get age from date or birthdate
$exp_in_years = (date("md", date("U", mktime(0, 0, 0, $start[2], $start[1], $start[0]))) > date("md", mktime(0, 0, 0, $end[2], $end[1], 0)) ? ((date("Y", mktime(0, 0, 0, 0, 0, $end[0])) - $start[0])) : (date("Y", mktime(0, 0, 0, 0, 0, $end[0])) - $start[0]));
}

return $exp_in_years;


}

function location() {
$sql = "SELECT * FROM personal";
$query = $this->db->query($sql)->result();

foreach ($query as $row) {
$city = $row->city;
}
return $city;
}

function relocate() {
$sql = "SELECT * FROM personal";
$query = $this->db->query($sql)->result();

foreach ($query as $row) {
$relocate = $row->relocate; //are you willing to relocate yes/no
}
return $relocate;
}

function get_personal() {
$this->db->select('*');
$this->db->from('membership');
$this->db->join('personal', 'membership.id_number = personal.id_number');
$query = $this->db->get()->result();

foreach ($query as $row) {
$row->id_number;
$row->firstname;
}
return $query;
}

广告详细信息如下:

    function get_advert() {
$sql = "SELECT * FROM job_advert";
$query = $this->db->query($sql)->result();
foreach ($query as $row) {

$job_id = $row->job_id;
$job_title = $row->job_title;
$salary_offered = $row->salary_offered;
$is_negotiable = $row->negotiable;
$company_location = $row->company_location;
$experience = $row->required_experience;
$age = $row->age;
}
}

}

现在我不知道如何将候选人数据与从 job_adverts 表中获取的数据进行比较。我真的不知道。任何形式的帮助将不胜感激。

数据库结构

粗体PK itacic 是FK

成员(member)身份(id_number、名字、姓氏、用户名、电子邮件、电话、密码、角色、注册时间、已激活);

个人(person_id、地址、城市、执照、id_number、性别、搬迁、最低工资、首选工资,合约类型);

job_list(job_list_id,job_history_id,start_date,end_date,收入,company_name,industry_type,reason_for_leaving,job_title );

job_history(job_history_id, id_number);

job_advert(advert_id、job_title、job_description、start_date、end_date、salary_offered、面议、福利、公司位置、required_experience、年龄);

我在数据库中有更多表,但这些是我用于排名的表。

最佳答案

我不确定您正在使用多少数据,但从数据库中提取所有数据并将其存储在本地 php 变量中似乎是个坏主意。

你的数据库结构看起来真的很糟糕......将尽可能多的数据存储到成员表中......不需要将其分成一堆表,除非该表获得大量列或这是一个人可以拥有多个数据点的领域。这方面的一个例子是以前的雇主...我将如何处理这个问题是创建一个名为membersData 的链接/连接表,其中membersDataType = 'employeer'

如果我要解决这个问题,我会执行以下操作...

1) 创建一个显示所有职位发布的 html 表单。当您从下拉列表中选择一项职位时,它会提交表单和 job_id。

2) 从数据库中选择该 job_id 的作业数据

3) 构建匹配每个条件的查询

$query = "SELECT * FROM members WHERE";
if ($job["age"]){ $query .= " age > ".$job["age"]; }

关于php - 在php中比较mysql数据库表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17722798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com