简体   繁体   English

动态查询php / mysql

[英]Dynamic query php/ mysql

I have some issues with a dynamic query: 我对动态查询有一些疑问:

    $cond = array();

    if (!empty($type_contrat)) {
        $cond[] = "job_offers.type_contrat = '$type_contrat'";
    }

    if (!empty($categorie_poste)) {
        $cond[] = "job_offers.cat_poste = '$categorie_poste'";
    }

    if (!empty($niveau_etudes)) {
        $cond[] = "job_offers.qualifications = '$niveau_etudes'";
    }

    if (!empty($experience)) {
        $cond[] = "job_offers.experience >= '$experience'";
    }       

    if (count($cond)) {

                $query = $mysqli->query('SELECT 
                job_offers.ref_org,
                job_offers.titre,
                job_offers.qualifications,
                job_offers.experience,
                job_offers.cat_poste,
                job_offers.type_contrat,
                job_offers.taux_occupation,
                job_offers.lieu_affectation,
                job_offers.pays,
                job_offers.url,
                job_offers.date_entered,
                job_offers.date_expire,
                organisations.ref_org,
                organisations.name_organisation
                FROM job_offers,organisations
                WHERE job_offers.ref_org = organisations.ref_org AND ');

                $query .=  implode(' AND ', $cond);
    }


    print_r($query);

--> result: prints only (linebreaks added for readability): ->结果:仅打印(添加换行符以提高可读性):

job_offers.type_contrat = '1' AND
job_offers.cat_poste = '3' AND
job_offers.qualifications = '2' AND
job_offers.experience >= '1'

and therefore no result. 因此没有结果。

You are trying to append a string to a mysqli-result object... 您正在尝试将字符串追加到mysqli-result对象...

Check the returnvalue of the mysqli->result() function here . 检查mysqli->结果()函数的返回值这里

Since someone is keen on removing this answer; 由于有人热衷于删除此答案; here's your solution: 这是您的解决方案:

    $cond = array();

    if (!empty($type_contrat)) {
        $cond[] = "job_offers.type_contrat = '$type_contrat'";
    }

    if (!empty($categorie_poste)) {
        $cond[] = "job_offers.cat_poste = '$categorie_poste'";
    }

    if (!empty($niveau_etudes)) {
        $cond[] = "job_offers.qualifications = '$niveau_etudes'";
    }

    if (!empty($experience)) {
        $cond[] = "job_offers.experience >= '$experience'";
    }       

    if (count($cond)) {

                $query = $mysqli->query('SELECT 
                job_offers.ref_org,
                job_offers.titre,
                job_offers.qualifications,
                job_offers.experience,
                job_offers.cat_poste,
                job_offers.type_contrat,
                job_offers.taux_occupation,
                job_offers.lieu_affectation,
                job_offers.pays,
                job_offers.url,
                job_offers.date_entered,
                job_offers.date_expire,
                organisations.ref_org,
                organisations.name_organisation
                FROM job_offers,organisations
                WHERE job_offers.ref_org = organisations.ref_org AND '.implode(' AND ', $cond));
    }


    print_r($query);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM