Php PDO&;MS SQL Server:插入整型列的值时出错

Php PDO&;MS SQL Server:插入整型列的值时出错,php,sql-server,pdo,Php,Sql Server,Pdo,我试图在INT列中插入一个整数值。然而,当我执行下面的PHP代码时,它会导致一个错误,告诉我我正在尝试插入一个“文本”,但事实并非如此 PHP $myCode = 1; $sth = $db->prepare("INSERT INTO tblCodes (myCode) VALUES (:myCode)"); $sth->bindParam(':myCode', $myCode, PDO::PARAM_INT); $sth->execute(); 错误 SQLSTATE[22

我试图在INT列中插入一个整数值。然而,当我执行下面的PHP代码时,它会导致一个错误,告诉我我正在尝试插入一个“文本”,但事实并非如此

PHP

$myCode = 1;
$sth = $db->prepare("INSERT INTO tblCodes (myCode) VALUES (:myCode)");
$sth->bindParam(':myCode', $myCode, PDO::PARAM_INT);
$sth->execute();
错误

SQLSTATE[22018]:强制转换规范的无效字符值:206 [FreeTDS][SQL Server]操作数类型冲突:文本与int不兼容 (SQLExecute[206]at /builddir/build/build/php-5.6.9/ext/pdo_odbc/odbc_stmt.c:254)

有人能帮我吗?
非常感谢

我认为这是一个bug。我通过更改查询解决了我的问题。在您的情况下,请按以下方式更改查询:

$myCode = 1;
$sth = $db->prepare("INSERT INTO tblCodes (myCode) VALUES (CAST(CAST(:myCode AS varchar) AS INTEGER))");
$sth->bindParam(':myCode', $myCode, PDO::PARAM_INT);
$sth->execute();

现在它应该由
PDO::PARAM_INT
PDO::PARAM_STR

共同工作,我认为这是一个bug。我通过更改查询解决了我的问题。在您的情况下,请按以下方式更改查询:

$myCode = 1;
$sth = $db->prepare("INSERT INTO tblCodes (myCode) VALUES (CAST(CAST(:myCode AS varchar) AS INTEGER))");
$sth->bindParam(':myCode', $myCode, PDO::PARAM_INT);
$sth->execute();

现在,它应该由
PDO::PARAM_INT
PDO::PARAM_STR

两个部分共同工作。您能显示$code的值吗?可能不是有效的整数。实际上,列的类型可能不正确。可能是/or@user_0$code的值为1,如上所示。@Fred ii-我也尝试将该值作为“PARAM:STR”插入,但这会导致相同的错误。您可能需要再次检查,这在PHP 7中似乎已部分修复。你能显示$code的值吗?可能不是有效的整数。实际上,列的类型可能不正确。可能是/or@user_0$code的值为1,如上所示。@Fred ii-我也尝试将该值作为“PARAM:STR”插入,但这会导致相同的错误。您可能需要再次检查,这在PHP 7中似乎已部分修复。您好,穆罕默德-请不要在您的帖子中添加宗教改道,如果人们删除了非必要的内容,请像这样离开。如果有人更改了您的技术资料的实质性含义,您可能会回滚。谢谢您好,穆罕默德-请不要在您的帖子中添加宗教改道,如果人们删除了非必要的内容,请像这样离开。如果有人更改了您的技术资料的实质性含义,您可能会回滚。谢谢