2013-07-19 154 views
0

更新如何使用查询结果()中的另一个查询[笨]

的你的方法的所有工作的价值。感谢@NiloySaha,@AeroX,@Ray,@SusheelMishra。

但是,如果我想比较更多的领域,如工作经验,工资等? @Ray我只是像这样添加更多的参数

function check_job_adverts($age, $experience, $salary){ 

} 

或者我会如何处理? 我贴切的新本,所以请原谅我,如果我问noobish问题..


我有以下几点:

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; 
     } 

我想知道如何使用$年龄变量另一个查询。例如: 我想将$agejob_advert表进行比较,该表可能有年龄要求,然后在会员表中显示符合job_advert所需年龄的所有会员表。

+0

从循环返回值? – SachinGutte

回答

0

尝试:

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>'; 
    } 
} 
+0

虐待它试试:) – Renier

+0

让我知道它是否工作或你需要什么其他 –

+0

我将如何循环访问函数another_funcion_call($ arrayOfIdsAge)''?对不起,如果它是一个noobish questuion。 – Renier

0

如果我猜对了,你需要比较几年。 所以使用列,而不是男,d,Y

select FLOOR(DATEDIFF('2013-07-19','2013-05-10')) 
+0

我从南非身份证号码中得到年龄,如果格式化“9109205021082”,前6位数字中的哪一个是'YYmmDD'。 – Renier

0

您可以使用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_NUMBER的前6个字符转换成一个日期,并将其与当前的日期,并获得在多年的区别。

+0

我测试了你给我的查询,但它似乎不起作用。它在'AGE'中返回NULL。 – Renier

+0

我没有安装mysql来调试,但尝试打破查询,看看它失败的地方。尝试运行'SELECT DATE(CONCAT(LEFT(id_number,2),' - ',MID(id_number,3,2),' - ',MID(id_number,5,2)))''来查看是否这样做首先有效的日期,如果它不然后剥离DATE()位并检查concat结果等等。 – AeroX

+0

查询中存在缺陷...我尝试了多种不同的方式来执行此操作..如果我输入一个id号码,例如。 “570920 ..”它选择年份为'2057',因此给我一个负值...... – Renier

0

,如果你不想把它调用相同的功能,年龄()只是一个例子;

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); 
相关问题