0

この関数は、医師と診療所の 2 つの別個のテーブルから医師の情報を返すことを目的としています。

function searchSubs($spc, $stt, $name, $ls, $ll){
    $query ='
        SELECT doctor.*, clinic.address
        FROM doctor
        LEFT JOIN clinic
            ON ( doctor.id = clinic.dr <<STATE CONDITION>>)
        WHERE doctor.dr_name REGEXP  :dr <<SPECIALIZATION CONDITION>>
            AND doctor.active = 1
        LIMIT :s, :l;
        '
    ;

    $query = ($spc == 0) ? str_replace('<<SPECIALIZATION CONDITION>>','',$query): str_replace('<<SPECIALIZATION CONDITION>>',' AND `doctor`.`specialization` = :sp ',$query);
    $query = ($stt == 0) ? str_replace('<<STATE CONDITION>>','',$query): str_replace('<<STATE CONDITION>>',' AND `clinic`.`governorate` = :st ',$query);

    $searchPDO = new PDO(DNS,ReaderUser,ReaderPass);
    $searchPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    $searchPDO->exec("SET CHARACTER SET utf8");

    $stmt = $searchPDO->prepare($query);

    if ($spc != 0) $stmt->bindParam(":sp",$spc,PDO::PARAM_INT);
    if ($stt != 0) $stmt->bindParam(":st",$stt,PDO::PARAM_INT);
    $stmt->bindValue(":dr",'.*'.$name.'.*',PDO::PARAM_STR);
    $stmt->bindParam(":s",$ls,PDO::PARAM_INT);
    $stmt->bindParam(":l",$ll,PDO::PARAM_INT);

    $stmt->execute();

    $Drs = $stmt->fetchAll(PDO::FETCH_ASSOC);
    return $Drs;
}

そのような関数を呼び出すと正常に動作します:

$drs = searchSubs('12', 6, '<<some Arabic name here>>' , 0, 10);

そして、私がそのように呼び出すときはしません:

$SDrs = searchSubs($specialization,$state,$name,$s,$l);

過去 2 日間、その理由を検索しましたが、何もありませんでした。文字列変数を url_decode しました$nameが、データベース内のデータ型を使用してさまざまな方法を試しましたが、何もありませんでした。

4

0 に答える 0