1

我一直在尝试做一个搜索过滤器,但这个错误继续出现,有人可以帮我吗?

{

    require_once('conn.php');

    
    $idata = $_POST["idata"];
    $fdata = $_POST["fdata"];

    $sql = "Select TOP 10* from cadcli where dtcad between $idata and $fdata";
    $query = ibase_query($dbh,$sql) or die (ibase_errmsg());
    while ($row = ibase_fetch_object($query)) {
        echo $row->COLUNA1."n";}
    ibase_free_result($query);
    echo "$query";
    ibase_close($dbh);


}
4

1 回答 1

1

问题是 Firebird 不知道关键字TOP。Firebird 2.5 及更早版本中的等价物是FIRST. 从 Firebird 3 开始,您还可以使用 SQL 标准FETCH

使用FIRST

select first 10 * from cadcli ... 

使用FETCH

select * from cadcli ... fetch first 10 rows only

请注意,如果没有ORDER BY,则顺序不是确定性的。

我还注意到您正在查询中进行字符串插值,这使得它容易受到 SQL 注入的影响。我建议您切换到使用带参数的准备好的语句(请参阅ibase_prepareibase_execute)。

于 2020-10-14T08:29:37.123 回答