将变量发送到函数以执行odbc SELECT

时间:2011-01-20 15:40:41

标签: php database odbc

我正在尝试执行以下功能但不显示任何内容。

function displayNr($x){
    $sql="SELECT D4741 FROM table_x WHERE D4711='".$x."';       
    if (!$result = odbc_exec($pconn, $sql)) {
        echo "Query error! ODBC: ", odbc_error();
    } else {
        while ($row = odbc_fetch_array($result)) {
        echo $row["D4741"] . "\n";
    }
    }
}

displayNr('name');

但是,如果我删除它正常工作的功能:

x='name';

$sql="SELECT D4741 FROM table_x WHERE D4711='".$x."';       
if (!$result = odbc_exec($pconn, $sql)) {
    echo "Query error! ODBC: ", odbc_error();
} else {
    while ($row = odbc_fetch_array($result)) {
    echo $row["D4741"] . "\n";
}
}

可能是什么问题?

3 个答案:

答案 0 :(得分:1)

$ pconn未在函数中设置。

答案 1 :(得分:0)

在函数中,$ pconn是一个新的局部变量(具有函数的作用域),并且与函数外部定义的$ pconn不同。将其作为参数传递:

function displayNr($x,$pconn){
    $sql="SELECT D4741 FROM table_x WHERE D4711='".$x."';       
    if (!$result = odbc_exec($pconn, $sql)) {
        echo "Query error! ODBC: ", odbc_error();
    } else {
        while ($row = odbc_fetch_array($result)) {
        echo $row["D4741"] . "\n";
    }
    }
}

displayNr('name');

注意SQL注入!!! 您的代码是不该做的完美示例!!:

$sql="SELECT D4741 FROM table_x WHERE D4711='".$x."';

请看:SQL Injection或只是google it

答案 2 :(得分:0)

function displayNr($x, $pconn)
{
    $sql = "SELECT D4741 FROM table_x WHERE D4711='" . $x . "'";        //here " is remaining
    if (!$result = odbc_exec($pconn, $sql)) {
        echo "Query error! ODBC: ", odbc_error();
    } else {
        while ($row = odbc_fetch_array($result)) {
            echo $row["D4741"] . "\n";
        }
    }
}

displayNr('name');