【发布时间】:2016-08-05 21:00:30
【问题描述】:
我使用 PDO 连接一个 ms-access 数据库,其中我有一个名为 Instalación 的列:
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; Dbq=my/path/to/file.mdb");
$str="SELECT * FROM table";
$qr=$db->query($str);
if( $qr != false){
while($result=$qr->fetch(PDO::FETCH_ASSOC)){
print_r($result);
}
}
else{
print_r($db->errorInfo());
}
我得到了这样的东西:[Instalaci�n] => DHg 我使用 utf8_encode() 解决了它,所以它变成了 ([Instalación] => DHg)
我的问题如下:
当我将字符串查询更改为select Instalación from table 时,$db->query($str) 返回false
我通过更改$str 尝试了一些事情,以下是相关的错误:
错误 #1
我做了什么
select Instalación from table 或select [Instalación] from table
我得到的错误:
[0] => 07002
[1] => -3010
[2] => [Microsoft][Controlador ODBC Microsoft Access] Pocos par�metros. Se esperaba 1. (SQLExecute[-3010] at ext\pdo_odbc\odbc_stmt.c:254)
[3] => 07002
错误 #2
我做了什么:
$quoted=$db->quote('Instalación');
$str="select $quoted from table";
我得到的错误:
[0] => 42000
[1] => 0
[2] => [Microsoft][Controlador ODBC Microsoft Access] La instrucci�n SELECT incluye una palabra reservada, le falta un argumento o est� mal escrito, o bien los signos de puntuaci�n no son correctos. (SQLPrepare[0] at ext\pdo_odbc\odbc_driver.c:206)
[3] =>
错误 #3
我做了什么:
SELECT \'Instalación\' from caudal
我得到的错误:
[0] => 42000
[1] => 0
[2] => [Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis (falta operador) en la expresi�n de consulta '\'Instalación\''. (SQLPrepare[0] at ext\pdo_odbc\odbc_driver.c:206)
[3] =>
如您所见,我没有办法面对这个问题。你能帮我解决这个问题吗? 我还发现显示错误时出现渲染问题很奇怪......
【问题讨论】:
-
您可以尝试将 PHP 源文件的编码更改为
Windows-1252(例如,Notepad++ 中的“Encode in ANSI”),以便 PDO_ODBC 和 Access ODBC 驱动程序可以就 @ 的字符编码达成一致987654337@.