我正在嘗試使用 UNION ALL 連接 3 個表。我嘗試了以下代碼。并給出無效參數(shù)編號的錯誤:綁定變量的數(shù)量與標記的數(shù)量不匹配。$codeArray = explode(',', $code);$inQuery = implode(',', array_fill(0, count($codeArray), '?')); $full_dt = date('Y-m-d H:i:s');$query = "SELECT * FROM ( SELECT a.* FROM pat_info a INNER JOIN pat_medication b ON a.id = b.pat_id WHERE a.status != 2 AND b.status != 2 AND '$full_dt' BETWEEN b.start_date AND b.end_date AND a.location_code IN ($inQuery) AND b.stock_status != '2' AND (b.total_qty - (b.given + b.not_taken)) < 12 UNION ALL SELECT a.* FROM pat_info a INNER JOIN prn_medication b ON a.id = b.pat_id WHERE a.status != 2 AND b.status != 2 AND '$full_dt' BETWEEN b.start_date AND b.end_date AND a.location_code IN ($inQuery) AND b.stock_status != '2' AND (b.total_qty - (b.given + b.not_taken)) < 12 ) x GROUP BY a.id ORDER BY a.id DESC";$statement = $con->prepare($query);$statement->execute($codeArray);
1 回答

Helenr
TA貢獻1780條經(jīng)驗 獲得超4個贊
由于代碼中存在in
兩次該子句,因此需要將值綁定兩次。
execute()
執(zhí)行此操作的一個簡單方法是在...之前復制數(shù)據(jù)。
$codeArray = array_merge($codeArray, $codeArray);
你還需要改變
GROUP BY a.id ORDER BY a.id DESC
到
GROUP BY x.id ORDER BY x.id DESC
因為a
別名位于子選擇中,而不是整個選擇中。
- 1 回答
- 0 關(guān)注
- 144 瀏覽
添加回答
舉報
0/150
提交
取消