Php 如何在另一个查询中使用query result()值[codeigniter]
更新 你所有的方法都有效。谢谢@NiloySaha、@AeroX、@Ray、@SusheelMishra 但如果我想比较更多的领域,比如工作经验、薪水等,该怎么办? @雷,我应该像这样添加更多的参数吗Php 如何在另一个查询中使用query result()值[codeigniter],php,mysql,database,codeigniter,codeigniter-2,Php,Mysql,Database,Codeigniter,Codeigniter 2,更新 你所有的方法都有效。谢谢@NiloySaha、@AeroX、@Ray、@SusheelMishra 但如果我想比较更多的领域,比如工作经验、薪水等,该怎么办? @雷,我应该像这样添加更多的参数吗 function check_job_adverts($age, $experience, $salary){ } ? 或者我将如何处理这个问题? 我对这一点还不熟悉,所以如果我问一些不切实际的问题,请原谅 我有以下资料: function age() { $sql = "SE
function check_job_adverts($age, $experience, $salary){
}
?
或者我将如何处理这个问题?
我对这一点还不熟悉,所以如果我问一些不切实际的问题,请原谅
我有以下资料:
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;
}
我想知道如何在另一个查询中使用$age变量。例如:
我想将$age与可能有年龄要求的招聘广告表进行比较,然后在会员资格表中显示符合招聘广告要求年龄的所有人。如果我猜对了,您需要比较年份。 所以使用列而不是m,d,y
select FLOOR(DATEDIFF('2013-07-19','2013-05-10'))
您可以使用mysql计算人的年龄,而不是在PHP中进行计算,这样就不需要运行多个查询
SELECT YEAR( DATEDIFF( CURDATE(), DATE(CONCAT( LEFT(id_number,2), '-', MID(id_number,3,2), '-', MID(id_number,5,2) ))) ) AS AGE
类似于上面的方法应该可以将id_编号的前6个字符转换为日期,并将其与当前日期进行比较,得到以年为单位的差值。尝试:
function age() {
$data = array();
$sql = "SELECT * FROM membership";
$query = $this->db->query($sql)->result();
foreach ($query as $key=>$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; #not returning the age now instead inserting in a array
$data[$key]['id'] = $id;
$data[$key]['age'] = $age;
}
$data = $this->another_funcion_call($data); #calling another function which will recieve the array of ids / age
return $data;
}
function another_funcion_call($arrayOfIdsAge){
//loop through the array and do something
foreach($arrayOfIdsAge as $key=>$each){
echo "ID :".$each['id'].' AGE : '.$each['age'].'<br>';
}
}
举个例子,如果你不想在年龄的函数中调用它
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 check_job_adverts($age){
// here goes your job_advert checking function
// example.. run an array to match ages vs jobs
// mind the array return if multiple options
}
$age = age();
// somewhere else in your script make the call with $age
$fetchJobs = check_job_adverts($age);
我从一个南非身份证号码中得到年龄,如果格式为910920501082,前6位数字中的哪一位是YYmmDD。我测试了你给我的查询,但它似乎不起作用。。我没有安装mysql来调试它,但是试着将查询分解,看看它失败的地方。尝试运行SELECT DATECONCAT LEFTid_编号,2',-',MIDid_编号,3,2',-',MIDid_编号,5,2位以查看是否首先生成有效日期,如果没有,则关闭日期位并检查concat结果等。查询中存在缺陷。。。我已经尝试了多种不同的方法。。如果我输入一个身份证号码,例如570920。。它把年份选为2057年,所以给了我一个负值……你可以在年份部分之前加上前缀“19”+,强制它与1957年进行互操作;目前,由服务器决定2位数年份属于哪个世纪。这是以2位格式存储日期的一个短版本。您可以采用两位数格式的当前年份,如果年份高于两位数,则在两位数年份上加上前缀“19”,否则在两位数年份上加上前缀“20”。从循环返回值?如何在函数另一个函数调用$ArrayFidsage中循环数组?抱歉,如果这是一个无意义的问题。更改以上答案,请检查。