2017-10-05 90 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

尝试测试您的方法离散,似乎你有结合的问题。 –