2017-10-05 85 views
0

我正在創建一個簡單的方法來從表中的一行中獲取字段值。 但不知何故,我無法得到字段值....可以net從php方法獲得字段值

這裏是我的簡單梅索德

private function getBankKode($transId=17000012720) 
{ 

    try 
    { 

     $qry = "SELECT * FROM accbank WHERE bank_transid='$transId'"; 
     $res = $this->dbCon->query($qry); 
     $rec = $res->fetch(PDO::FETCH_ASSOC); 
      return $rec['bank_kode']; 

    } 
    catch(PDOException $e) 
    { 

     $this->set_commit("ROLLBACK"); 
     $this->set_message("Methode getBankKode - ".$e->getMessage()); 
    } 

} 

沒有錯誤消息出來...... 領域bank_kode類型alphachar有9位在lenght 這梅索德應該返回值「BANK-0014」 ......

有趣的是,如果我改變字段返回statament成爲return $rec[bank_id]

我能得到其他字段的值,即行ID

更新: 如果我查詢行表外班...

$qry = "SELECT * FROM accbank WHERE bank_transid='17000012720'"; 
$res = $pdoCon->query($qry); 
$rec = $res->fetch(PDO::FETCH_ASSOC); 
$bankKode = $rec['bank_kode']; 

我可以得到bank_kode字段值.....

+1

您的代碼容易受到[** SQL注入**](https://en.wikipedia.org/wiki/SQL_injection)攻擊。您應該通過[** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)或[** PDO **](https ://secure.php.net/manual/en/pdo.prepared-statements.php)驅動程序。 [**這篇文章**](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)有一些很好的例子。 –

+1

在這裏你不需要'ROLLBACK' - 你只是在讀取而不是寫入,而且你甚至沒有開始一個事務。 –

+0

你可能'var_dump($ rec);'幫助你看看裏面有什麼... –

回答

-1

儘量做到在第一代碼如下:

$qry = "SELECT * FROM accbank WHERE bank_transid=' ".$transId." ' "; 
    $res = $this->dbCon->query($qry); 
    $rec = $res->fetch(PDO::FETCH_ASSOC); 
     return $rec['bank_kode']; 
+0

...我嘗試了您的建議,但它不能解決問題 – hhalat

+0

嘗試測試您的方法離散,似乎你有結合的問題。 –