Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在另一个查询中使用query result()值[codeigniter]_Php_Mysql_Database_Codeigniter_Codeigniter 2 - Fatal编程技术网

Php 如何在另一个查询中使用query result()值[codeigniter]

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

更新

你所有的方法都有效。谢谢@NiloySaha、@AeroX、@Ray、@SusheelMishra

但如果我想比较更多的领域,比如工作经验、薪水等,该怎么办? @雷,我应该像这样添加更多的参数吗

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中循环数组?抱歉,如果这是一个无意义的问题。更改以上答案,请检查。