为什么我的 sql 字符串会抛出语法错误?答:MDBTools 不支持 JOIN 或 ORDER BY 或其他 SEE http://github.com/brianb/mdbtools/blob/master/src/sql/lexer.l
此代码不起作用(附近有语法错误。):
$db = "access.mdb";
$conn = new PDO("odbc:DRIVER=MDBTools; DBQ=$db; Uid=; Pwd=;");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'SELECT "Order No", "Ship To File"."Cust Name" ';
$sql = $sql . 'FROM "Order File" ';
$sql = $sql . 'INNER JOIN "Ship To File" ';
$sql = $sql . 'ON "Order File"."Customer No" = "Ship To File"."Cust No" ';
$sql = $sql . 'WHERE "Order No"=\'RV2002-001\'';
更长/其他信息:
很确定它是“Ship To File”。“Cust Name”。扔近了。错误,因为省略“Ship To File”。“Cust Name”将错误更改为接近 INNER,这让我认为问题是带有空格的字段和表的命名空间问题。
用刻度替换带有空格的表和字段的双引号甚至会破坏最简单的查询(` 附近的语法错误)。INNER JOIN 查询似乎在 MS-Access 中工作正常,但使用括号而不是双引号。
此代码也不起作用(` 处的语法错误):
$db = "access.mdb";
$conn = new PDO("odbc:DRIVER=MDBTools; DBQ=$db; Uid=; Pwd=;");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT `Order No` ";
$sql = $sql . "FROM `Order File` ";
这段代码给了我一个记录/结果:
$db = "access.mdb";
$conn = new PDO("odbc:DRIVER=MDBTools; DBQ=$db; Uid=; Pwd=;");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'SELECT "Order No" ';
$sql = $sql . 'FROM "Order File" ';
$sql = $sql . 'WHERE "Order No"=\'RV2002-001\'';
适用于 Linux 的 Windows 子系统、PHP 版本 5.5.9-1ubuntu4.22、apache2、MDBTools,无法更改数据库表或字段(目前通过符号链接访问数据库,而其他人仍在使用 MS Access 作为其界面)。
“Ship To File”。“客户编号”是类型(自动编号)“订单文件”。“客户编号”是类型(编号)
意见或建议?