2013-04-22 72 views
1

我想將參數綁定到在PHP中使用ODBC的UPDATE語句,但SQL語句失敗,我不能爲我的生活找出原因。我試過谷歌搜索,但似乎很少有關於使用ODBC與PHP的信息,而不是像MySQLi和PDO。將PHP變量綁定到ODBC SQL UPDATE語句

我用參數綁定找到的大多數示例都使用SELECT語句,但據我所知,應該沒有什麼區別。我找到的最接近的答案是here on stackoverflow。據我所知,他們正在做我在做的事情,但我一直在收到錯誤。這裏是我的代碼:

$updQuery = "UPDATE Demographic SET dmg_FirstName=? WHERE dmg_ID=?"; 
$update = odbc_prepare($connect, $updQuery); 

$fname = $_POST['firstname']; 
$pID = 145100007; 
$updResult = odbc_execute($update, array($fname, $pID)) or die (odbc_errormsg()); 

這是我不斷收到上述代碼中的錯誤:

Warning: odbc_execute(): SQL error: [Microsoft][ODBC Driver Manager] SQL data type out of range, SQL state S1004 in SQLBindParameter in C:\xampp\htdocs\work\ajaxdd.php on line 44 

代碼的工作,當我刪除參數綁定,所以如果出現最壞最壞我可以嘗試盡我所能清理數據,但這顯然不是可取的。

+1

查找錯誤消息[here](http://odbc.net/api/index.shtml?SQLGetTypeInfo),看起來好像這可能是您使用的ODBC驅動程序中的錯誤(它看起來像是PHP正在使用的數據*類型*標識符被拒絕,而不是您的實際值)。 ODBC準備的語句在這方面非常有限,因爲所有內容都被綁定爲一個字符串。理想情況下,您會爲特定的RDBMS使用PHP API /驅動程序 - 這不可能嗎? – DaveRandom 2013-04-22 13:38:37

+0

不幸的是,這似乎確實如此。我必須連接到一個4D的SQL服務器,它有一個PHP驅動程序,但它已過時,似乎已被放棄,我實際上找不到可用於最新PHP版本的驅動程序。 – Roy 2013-04-22 13:50:17

+0

你可以嘗試使用PDO ODBC嗎? http://php.net/manual/en/ref.pdo-odbc.php – silkfire 2013-04-22 13:52:40

回答

0

這可能意味着您試圖插入高於該整數列允許的ID。嘗試驗證這是否是第一個案例。 dmg_ID的類型是什麼? 145100007是一個相當高的數字,所以我懷疑這可能是罪魁禍首。

+0

感謝您的回覆,但不幸的是,這似乎並不是罪魁禍首。這是一個長期的INT,所以長度不應該成爲問題。作爲一個測試,雖然我刪除了ID,並得到它由另一個字符串字段更新,但得到了同樣的錯誤。 – Roy 2013-04-22 13:45:58