我试图在PHP中使用MDBTools从AccessDB文件中获取一些数据。 除ORDER BY和GROUP BY
外,所有正常的SQL查询都正常工作当我使用ORDER BY时,我收到错误
Line出错:ORDER附近的语法错误
ORDER附近的语法错误 没有结果'SELECT * FROM CHECKINOUT ORDER BY CHECKTIME DESC'命令
这是代码
$dataSourceName = "odbc:Driver=$driver;DBQ=$mdb_file;";
$conn = new PDO($dataSourceName);
$q = $conn->prepare("SELECT * FROM CHECKINOUT ORDER BY CHECKTIME DESC");
$q->execute();
$result = $q->fetchAll(PDO::FETCH_OBJ);
print_r($result);
[更新] 当我在mysqli中使用上述查询时,它就像魅力一样。我创建了与访问db文件中的数据库类似的数据库并使用了此代码
$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
$row = $conn->query("SELECT USERID, CHECKTIME, CHECKTYPE FROM CHECKINOUT ORDER BY USERID DESC");
$result = $row->fetch_object();
print_r($result);
上面的代码就像魅力一样。 但不是在使用PDO时。
答案 0 :(得分:0)
首先查询是否在没有ORDER BY的情况下工作?
在本地linux盒子上,我使用连接到.MDB,我根本不能使用ORDER BY。 我不确定这是由于odbc驱动程序,还是我的某个地方的配置错误。我很确定GROUP BY和ORDER BY不受支持。但是我不能指出你的文档。
$conn = new PDO("odbc:Driver=MDBTools; DBQ=$mdb_file; UID=; PWD=;");
$q = $conn->prepare("SELECT col1, col2, col3 FROM some_table WHERE FINISHED = 0");
$success = $q->execute();
$error_info = $q->errorInfo(); // if needed
$result = $q->fetchAll(PDO::FETCH_OBJ);
aasort($rows, "col2");
我建议先获取行然后排序。 它不是你的要求,但它完成同样的事情(或应该)
编辑:对不起,我忘了包含aasort,我认为该功能是内置的。function aasort (&$array, $key) {
$sorter = [];
$toreturn = [];
reset($array);
foreach ($array as $ii => $va)
$sorter[$ii] = $va[$key];
arsort($sorter);
foreach ($sorter as $ii => $va)
$toreturn[$ii] = $array[$ii];
$array = $toreturn;
}