繁体   English   中英

PDO & MS SQL 服务器:为 integer 列插入值导致错误

[英]PDO & MS SQL Server: inserting value for integer column results in error

我正在尝试将 integer 值插入到我的 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] 在 /builddir/build/BUILD/php-5.6.9/ext/ pdo_odbc/odbc_stmt.c:254)

有谁能够帮我? 非常感谢!

如果您连接到数据库的用户没有适当的权限,则可能会出现这种情况。

刚才遇到了标量function的类似问题,原来给用户加上执行权限就解决了。 未经许可,在我看来,驱动程序无法确定数据类型,默认情况下它假定它是文本。

我认为这是一个错误。 我通过更改查询解决了我的问题。 根据您的情况,更改查询,如下所示:

$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_INTPDO::PARAM_STR

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM