отправка переменной в функцию для выполнения odbc SELECT - PullRequest
0 голосов
/ 20 января 2011

Я пытаюсь выполнить приведенную ниже функцию, но ничего не отображается.

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 ]

1 голос
/ 20 января 2011

$ pconn не установлен в функции.

0 голосов
/ 28 июня 2019
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');
0 голосов
/ 20 января 2011

в функции, $ 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-инъекция или просто Google google

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...