2017-10-05 9 views
0

Je crée une méthode simple pour obtenir une valeur de champ à partir d'une ligne dans une table. mais de toute façon je ne pouvais pas la valeur du champ ....Pourrait obtenir une valeur de champ net d'une méthode PHP

Voici mon simple, Methode

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()); 
    } 

} 

il n'y a pas de message d'erreur sortir ... type bank_kode de champ est alphachar avec 9 chiffres en longueur cette Methode devrait retourner la valeur « BANK-0014 » .....

le plus drôle est que je pourrais obtenir d'autres valeur du champ à savoir l'ID de ligne si je change le champ le retour statament se return $rec[bank_id]

MISE À JOUR: Si j'Interrogation de la table de ligne en dehors de la classe ...

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

je peux obtenir la valeur du champ bank_kode .....

+1

Votre code est vulnérable aux attaques [** injection SQL **] (https://en.wikipedia.org/wiki/SQL_injection). Vous devez utiliser des instructions préparées avec des paramètres liés, via [** mysqli **] (https://secure.php.net/manual/fr/mysqli.prepare.php) ou [** PDO **] (https : //secure.php.net/manual/fr/pdo.prepared-statements.php) pilotes. [** Cet article **] (https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) a de bons exemples. –

+1

Vous n'avez jamais besoin de 'ROLLBACK' ici - vous ne faites que lire et ne pas écrire, et vous n'avez même pas commencé une transaction. –

+0

Vous pourriez 'var_dump ($ rec);' pour vous aider à voir ce qu'il y a dedans ... –

Répondre

-1

Essayez de faire ce qui suit à premier code:

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

... J'essaie de faire une suggestion mais cela ne résout pas le problème – hhalat

+0

Essayez de tester votre méthode discrètement, il semble que vous avez un problème combiné. –