Есть Firebird 2.0.3.12981 и табличка в базе данных созданная следующим запросом:
Код: Выделить всё
CREATE TABLE LANGUAGE (
ID INTEGER NOT NULL PRIMARY KEY,
NAME VARCHAR(3) NOT NULL UNIQUE COLLATE PXW_CYRL,
BASIC CHAR(1) DEFAULT '0' NOT NULL CHECK (BASIC IN ('0', '1')),
DSCR VARCHAR(100) NOT NULL COLLATE PXW_CYRL
);
Код: Выделить всё
<?php
$res = false;
$db = ibase_pconnect("localhost:d:/cms/j/database/base.gdb", 'sysdba', 'masterkey');
$tr = ibase_trans(IBASE_WRITE | IBASE_COMMITTED | IBASE_WAIT | IBASE_REC_NO_VERSION, $db);
if ($query = ibase_query($db, $tr, "SELECT COUNT(*) FROM LANGUAGE WHERE NAME = ?", "english")) {
$row = ibase_fetch_row($query);
$res = $row[0] != 0;
ibase_free_result($query);
}
ibase_close($db);
var_dump($res);
?>
Почему если использовать параметризированный запрос ошибка есть:Dynamic SQL Error SQL error code = -303 arithmetic exception, numeric overflow, or string truncation
А если параметр в запросе не использовать – ошибки нет.ibase_query($db, $tr, "SELECT COUNT(*) FROM LANGUAGE WHERE NAME = ?", "english")
Чем такое поведение можно объяснить?ibase_query($db, $tr, "SELECT COUNT(*) FROM LANGUAGE WHERE NAME = 'english'")