Рефакторированная программа PHP генерирует: Uncaught PDOException: SQLSTATE [22018]: Неверное значение символа для спецификации приведения - PullRequest
0 голосов
/ 11 октября 2019

Я нахожусь в процессе преобразования некоторого существующего кода в PHP 7 (работает PHP 7.3.9-1). Как часть этого движения я перехожу в PDO. Целевой сервер - MS SQL (2014).

Код:

$target_db_lnk->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$query = "INSERT INTO ship_list (id,active,imo) VALUES (:id,:active,:imo)";
$target_stmt = $target_db_lnk->prepare($query);
$target_stmt->bindParam(':id', intval($fields[0]), PDO::PARAM_INT);
$target_stmt->bindParam(':active', intval($fields[1]), PDO::PARAM_INT);
$target_stmt->bindParam(':imo', intval($fields[3]), PDO::PARAM_INT);
$target_stmt->execute();

Когда я запускаю код, я получаю:

PHP Fatal error: Uncaught PDOException: SQLSTATE [22018]: Недопустимое значение символа для спецификации приведения: 206 [FreeTDS] [SQL Server] Тип операнда clash: текст несовместим с int (SQLExecute [206] в /build/php7.3-ltklYL/php7. 3-7.3.9 / ext / pdo_odbc / odbc_stmt.c: 258)

Определение целевой таблицы:

id int NOT NULL PRIMARY KEY
active int NOT NULL
imo int NOT NULL

Где PDO получает тип «текст»из. Чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...