【问题标题】:[Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause because of Offset and Limit[Microsoft][ODBC Microsoft Access Driver] 由于偏移和限制,FROM 子句中的语法错误
【发布时间】:2019-03-21 08:26:15
【问题描述】:

此外,我正在使用 php,codeigniter 来访问 mdb 文件。 我在使用以下内容时连接并查询数据库:

$this->mov->query("Select * from Logger")->result_array();

所以没有问题。当我尝试向查询添加限制和偏移量时出现问题。如下:

$this->mov->query("Select * from Logger Limit $limit offset $offset")->result_array();

我确定$offset$limit 不为空。

我收到以下错误:

错误号:37000

[Microsoft][ODBC Microsoft Access Driver] FROM 子句中的语法错误。

Select * from Logger Limit 10 offset 0

文件名:C:/inetpub/wwwroot/system/database/DB_driver.php

行号:691

我更偏向于 Mysql,在 MSAccess 方面没有太多经验。

我正在尝试 cmets 中建议的解决方法并开始使用 top 但现在我收到此错误:

错误号:37000

[Microsoft][ODBC Microsoft Access Driver] SELECT 语句 包含拼写错误的保留字或参数名称,或 遗漏,或标点不正确。

从 Logger 中选择 TOP 10

文件名:C:/inetpub/wwwroot/system/database/DB_driver.php

行号:691

【问题讨论】:

  • Access 中没有 LIMITOFFSET 这样的东西。要么使用那里描述的解决方法,要么重新设计您的应用程序以使其不需要它
  • 我会尝试解决这个问题,但现在 top 给出了另一个错误。编辑了原始帖子以显示
  • SELECT TOP 10 *,而不是SELECT TOP 10。现在您没有选择任何字段。
  • 如果我只需要一个选定的字段(包括 ex 01_Recipe_name),我该怎么做>问候并感谢您的帮助!

标签: php codeigniter ms-access


【解决方案1】:

对于那些被重定向到这里的人,我有一个答案,到目前为止我没有发现任何错误。希望我没有找到。 我的问题是分页和调整限制和偏移。 这是我为 MSAccess 分页找到的一种方式。如果您发现任何错误,请不要犹豫:

Select TOP {Rows/Page} * from {table} where {ID} not in (Select {ID} from (Select Top {Offset} * from {table} order by {column}) as tbl1) order by {column}

地点:

{Rows/Page} = Records to show per page
{table} = Table is your table
{ID} = A unique column in your table
{column} = Column in your table to order by

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多