ibase_query(): 动态 SQL 错误 SQL 错误代码 = -104 令牌未知

ibase_query(): Dynamic SQL Error SQL error code = -104 Token unknown

我一直在尝试进行搜索筛选,但此错误不断出现,有人可以帮助我吗?

{

    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);


}

问题是 Firebird 不知道关键字 TOP。 Firebird 2.5 及更早版本中的等价物是 FIRST. Since Firebird 3, you can also use the SQL standard FETCH.

使用FIRST:

select first 10 * from cadcli ... 

使用FETCH:

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

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

我还注意到您在查询中进行了字符串插值,这使得它容易受到 SQL 注入的攻击。我建议您改用带参数的预准备语句(请参阅 ibase_prepare and ibase_execute)。