ibase_query(): Ошибка динамического SQL Код ошибки SQL = -104 Токен неизвестен

Я пытался сделать поисковый фильтр, и эта ошибка продолжает появляться, может ли кто-нибудь мне помочь?

{

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


}

person Raul Nóbrega de Souza    schedule 13.10.2020    source источник
comment
В чем ошибка?   -  person concision    schedule 13.10.2020


Ответы (1)


Проблема в том, что Firebird не знает ключевого слова TOP. Эквивалент в Firebird 2.5 и более ранних версиях: -first-skip" rel="nofollow noreferrer">FIRST. Начиная с Firebird 3, вы также можете использовать стандарт SQL FETCH.

Использование FIRST:

select first 10 * from cadcli ... 

Использование FETCH:

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

Имейте в виду, что без ORDER BY порядок не является детерминированным.

Я также заметил, что вы выполняете интерполяцию строк в своем запросе, что делает его уязвимым для SQL-инъекций. Я рекомендую вам перейти на использование подготовленных операторов с параметрами (см. ibase_prepare и ibase_execute).

person Mark Rotteveel    schedule 14.10.2020