この関数は、医師と診療所の 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
が、データベース内のデータ型を使用してさまざまな方法を試しましたが、何もありませんでした。