2013-07-19 210 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); 
相關問題