尝试在Linux上使用php插入iSeries DB2时出现PDO错误

时间:2017-08-29 14:49:52

标签: php linux pdo odbc ibm-midrange

我一直在尝试通过PD通过PDO odbc运行插入语句到iSeries DB2。

以下是我的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();
}

?>

我收到以下错误消息:

user@server: /usr/bin/php myscript.php 1234 AC DOE JOHN JOHN.DOE

我与iSeries开发人员进行了双重检查,并且我使用的用户名已完全访问数据库/表/等...

请您帮我看看为什么插页不起作用?

注意:

  • 连接正常。

  • &#34;选择&#34;陈述工作正常。

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

提前致谢,

EGMWEB

3 个答案:

答案 0 :(得分:0)

根据我的研究,此错误通常是由应用于IBM i OS的升级或PTF引起的。修复是获取当前的ODBC驱动程序。您的管理员应该能够提供帮助。

答案 1 :(得分: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

... 记得改变&#34; QGPL&#34;在你的两个参数上

我调整了参数,我得到了它的工作。

谢谢大家!!

EGMWEB

答案 2 :(得分:0)

如果选择工作,表格不会被记录。您必须开始记录表,以便添加更改删除才能工作。 ACD不起作用。

as400上的

STRJRNPF ......