簡體   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