首页 > 解决方案 > 对 ODBC 查找表的 PHP 代码进行故障排除

问题描述

以下 PHP 代码是由 Oracle ODBC 查找表的开发人员编写的,虽然我可以找出 SQL,但我无法判断 PHP 代码在查找表 4 中做错了什么,因为我几乎没有 PHP 方面的专业知识


$emplid= $_REQUEST['emplid'];
//$emplid= $_GET['emplid'];
$connect = odbc_connect("datamart_64", "cchung", "npstempchienli");

if( $connect === false ) {
     echo "Unable to connect.</br>";
#    die( print_r( sqlsrv_errors(), true));
}

# query the users table for name and surname

$query  = "SELECT OPRID || '@nps.k12.nj.us' Manager_Email FROM PSOPRDEFN@PEOPLESOFT WHERE EMPLID = ( ";
$query .= "SELECT EMPLID FROM PS_JOB@PEOPLESOFT PJ2 WHERE POSITION_NBR = ( ";
$query .= "SELECT REPORTS_TO FROM PS_JOB@PEOPLESOFT PJ WHERE EMPLID='" . $emplid . "' AND EFFDT = (SELECT MAX(EFFDT) FROM PS_JOB@PEOPLESOFT WHERE EMPLID=PJ.EMPLID)) ";
$query .= "AND EFFDT = (SELECT MAX(EFFDT) FROM PS_JOB@PEOPLESOFT WHERE POSITION_NBR=PJ2.POSITION_NBR) ";
$query .= ")";

# perform the query
$result = odbc_exec($connect, $query);

if( $result === false ) {
     echo "Error in executing query.</br>";
#     die( print_r( sqlsrv_errors(), true));
}

while($myRow = odbc_fetch_array($result)){
    $rows[] = $myRow;
};

    echo '{'; 
    $last_key = end(array_keys($rows[0]));
    foreach($rows[0] as $key => $value) {
        if ($key == $last_key) {
            echo '"' . $key . '":"'. $value . '"';
        } else { 
            echo '"' . $key . '":"'. $value .'", ';
        }
    }
    echo '} ';

# close the connection
odbc_close($connect);


如果 PS 数据库中没有为查询的员工分配主管,则“报告给”字段默认为系统中每日津贴员工的同一人的姓名,就好像它是硬编码的一样。但是代码中没有任何建议。sql 代码对数据库正常工作,并让我得到正确的结果。因此我认为 PHP 代码有问题,这就是我需要一个 PHP 编码器来帮助解决这个问题的地方。PHP 中的 if else 语句中是否有某些内容默认为名为“keith barton”的员工,因为我看不到?

标签: phpodbc

解决方案


推荐阅读