2017-08-29 125 views
0

我一直在試圖通過php通過PDO通過PDO odbc對iSeries DB2運行插入語句的問題。在Linux上嘗試插入到iSeries DB2時發生PDO錯誤

以下是我的PHP腳本:

<?php 

$empl_number = $argv[1]; 
$empl_estatus = $argv[2]; 
$empl_lname = $argv[3]; 
$empl_fname = $argv[4]; 
$empl_user = $argv[5]; 

try { 

    $sql = "INSERT INTO `USER_PROFILE_AD` (`EMPLOYEE_NUMBER`, `EMPLOYEE_STATUS`, `LAST_NAME`, `FIRST_NAME`, `LDAP_RDN`, `ACTIVE`, `USER_PROFILE`) VALUES (:numb, :stat, :lname, :fname, :usern, :active, :profile)"; 
    $conn = new PDO("odbc:AS400TST"); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $conn->prepare($sql); 

    $stmt->bindParam(':numb', $empl_number, PDO::PARAM_INT); 
    $stmt->bindParam(':stat', $empl_estatus, PDO::PARAM_STR); 
    $stmt->bindParam(':lname', $empl_lname, PDO::PARAM_STR); 
    $stmt->bindParam(':fname', $empl_fname, PDO::PARAM_STR); 
    $stmt->bindParam(':usern', $empl_user, PDO::PARAM_STR); 
    $stmt->bindParam(':active', 0, PDO::PARAM_INT); 
    $stmt->bindParam(':profile', NULL, PDO::PARAM_NULL); 
    $stmt->execute(); 

} catch (PDOException $e) { 
    echo $e->getMessage(); 
} 

?> 

當我運行通過命令行腳本...

[email protected]: /usr/bin/php myscript.php 1234 AC DOE JOHN JOHN.DOE 

我收到以下錯誤信息:

SQLSTATE[42000]: Syntax error or access violation: 0 [IBM][System i Access ODBC Driver]Statement violates access rule: Connection is set to read only. (SQLPrepare[0] at /builddir/build/BUILD/php-5.4.16/ext/pdo_odbc/odbc_driver.c:206) 

我對iSeries開發人員進行了雙重檢查,並且使用DOES的用戶名已完全訪問數據庫/ table/et c ...

請你幫我看看爲什麼插入不起作用?

注:

  • 連接工作正常。

  • 「Select」語句正常工作。

  • 在/etc/odbc.ini的CommitMode = 2

由於提前,

EGMWEB

回答

0

從我的研究,這個錯誤通常是由升級引起的或應用於IBM i OS的PTF。解決的辦法是獲取當前的ODBC驅動程序。您的管理員應該能夠幫助解決這個問題。

+0

jmarkmurphy,謝謝你的回覆。我會檢查我們的iSeries管理員。 – egmweb

0

我找到了解決辦法 -

對於另外一個人是有這個問題,如果你的參考...

下面的文章: https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzatv/rzatvodbcman.htm

解釋了設置在完成ODBC.INI

...

DefaultLibraries = QGPL 
Database = 
ConnectionType = 0 
CommitMode = 2 
ExtendedDynamic = 0 
DefaultPkgLibrary = QGPL 
DefaultPackage = A/DEFAULT(IBM),2,0,1,0,512 
AllowDataCompression = 1 
LibraryView = 0 
AllowUnsupportedChar = 0 
ForceTranslation = 0 
Trace = 0 

... 記得要改變「QGPL」你的兩個參數

我調整了參數,我得到它的工作。

謝謝大家!

EGMWEB

0

如果選擇工作,表格不記載。您必須開始記錄表格以使添加更改刪除起作用。 ACD不起作用。

上的as400。

STRJRNPF ...

相關問題