我与 MDB数据库访问的PDO连接。 (没有MYSQL)。
我要对普罗旺斯数组(以及其他字段)进行SELECT查询(INNER JOIN TO 2 TABLES)。
表点击率
| ID | CTR | PROVENCE_CODE |
--------------------
| 1 | A1 | MI |
--------------------
| 2 | A2 | BO |
--------------------
| 3 | A3 | MI |
--------------------
普罗旺斯表:
| ID | CODE | NAME |
--------------------
| 1 | MI | Milan|
--------------------
| 2 | BO | Bolog|
--------------------
...
| 110| ZA | Zaga |
--------------------
搜索由PROVENCE.CODE完成,没有ID,所以目前我使用LIKE(我搜索精确值):
$sql = " SELECT * FROM CTR INNER JOIN PROVENCE ON ( CTR.PROVENCE_CODE = PROVENCE.CODE ) WHERE ( a list of other conditions ) AND ";
$sql .= "(";
foreach ( $provences as $provence ) {
$sql .= "PROVENCE.CODE LIKE ? OR ";
$vars[] = $provence;
}
$sql = rtrim($sql, " OR ");
$sql .= ")";
$s = $db->prepare($sql);
$s->execute($vars);
$ris= $s->fetchAll(PDO::FETCH_ASSOC);
查询适用于一定数量的PROVENCE ....但如果我在查询中插入所有110,我会收到错误QUERY TOO COMPLEX。
我尝试过改变:
$sql .= " AND ( PROVENCE.CODE IN (";
foreach ( $provences as $provence ) {
$sql .= "?', ";
$vars[] = $provence;
}
$sql = rtrim($sql, ", ");
$sql .= "))";
但是我得到了意想不到的结果。例如,如果我只插入" MI",我得到CTR表的所有3个条目而不是预期的2个结果。我不知道它是否是MDB访问的PDO问题
这是我使用的REAL查询:很长
string 'SELECT DISTINCT [05CTR].[05ID], [01Anagrafica].[01ID] FROM 95TipiPagamento RIGHT JOIN (((44Domini RIGHT JOIN (((07PacchettiServizi RIGHT JOIN 06Servizi ON [07PacchettiServizi].[07ID] = [06Servizi].[06Pacchetto]) RIGHT JOIN ((04Tipicontratti RIGHT JOIN ((02Tipicontatti RIGHT JOIN (01Anagrafica LEFT JOIN 03ContattiAnagrafica ON [01Anagrafica].[01ID] = [03ContattiAnagrafica].[03Anagrafica]) ON [02Tipicontatti].[02ID] = [03ContattiAnagrafica].[03Tipocontatto]) RIGHT JOIN 05CTR ON [01Anagrafica].[01ID] = [05CTR].[05Anagrafica]) ON [04Tipicontratti].[04ID] = [05CTR].[05Contratto]) LEFT JOIN 08CodiciCTR ON [05CTR].[05ID] = [08CodiciCTR].[08CTR]) ON [06Servizi].[06ID] = [08CodiciCTR].[08Codice]) LEFT JOIN 45ElencoDomini ON [05CTR].[05ID] = [45ElencoDomini].[45IDcontratto]) ON [44Domini].[44ID] = [45ElencoDomini].[45IDdominio]) LEFT JOIN 47ConsulentiAssociati ON [05CTR].[05ID] = [47ConsulentiAssociati].[47IDContratto]) LEFT JOIN 24Pagamenti ON [05CTR].[05ID] = [24Pagamenti].[24Contratto]) ON [95TipiPagamento].[95ID] = [24Pagamenti].[24IDTipoPagamento] WHERE 1 AND (( [05CTR].[05Numerocontratto] LIKE ? OR [05CTR].[05Numerocontratto] LIKE ? ) OR ( [01Anagrafica].[01Ragionesociale] LIKE ? OR [01Anagrafica].[01Ragionesociale] LIKE ? ) OR ( [03ContattiAnagrafica].[03Contatto] LIKE ? OR [03ContattiAnagrafica].[03Contatto] LIKE ? )) AND ([01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ? OR [01Anagrafica].[01Provincia] LIKE ?)' (length=5790)
exception 'PDOException' with message 'SQLSTATE[22018]: Invalid character value for cast specification: -3030 [Microsoft][Driver ODBC Microsoft Access] Espressione troppo complessa (SQLExecute[-3030]