2011-01-20 57 views
0

我想執行下面的函數,但不顯示任何東西。發送變量來執行odbc SELECT

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"; 
} 
} 

可能是什麼問題呢?

+2

@ user583162 - 勾選標記旁邊的答案,以紀念這一個作爲回答不要編輯標題.... – 2011-01-21 10:12:38

回答

1

$ pconn未在函數中設置。

+0

優秀,謝謝! – Linda 2011-01-21 07:18:40

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或者它只是谷歌

+0

謝謝!絕對,我會添加代碼以避免SQL注入 – Linda 2011-01-21 07:20:58