2016-06-29 13 views
0

ich habe diese SQL-Abfrage in PHP geschrieben:Transformation SQL-Abfrage zu Fluentpdo Abfrage

$query = sprintf("UPDATE bank_info SET 
         amount_dollar = amount_dollar +'$amount_dollar' , 
         amount_euro = amount_euro + '$amount_euro' , 
         amount_local = amount_local + '$amount_local' 
         WHERE bank_id = '$bank_id' "); 

diese Abfrage funktioniert gut, aber ich möchte diese Abfrage verwandeln FluentPDO verwenden. Ich möchte Arrays verwenden, um die Werte zu setzen. zum Beispiel:

$table='bank_info'; //table name 
$arrVal=array(); //values needs to be SET 
$arrVal['amount_dollar = amount_dollar+?']=$amount_dollar; 
$arrVal['amount_euro = amount_euro+?']=$amount_euro; 
$arrVal['amount_local = amount_local+?']=$amount_local; 
$arrWhere=array(); //where condition 
$arrWhere['bank_id']=$bank_id; 

dies ist die Abfrage:

$query = $this->pdo->update($table)->set($arrVal)->where($arrWhere); 

$query->execute(); 

Ich denke, das Problem in dem $ arrval ist, kann nicht den richtigen Weg, Wert auf den aktuellen Wert für eine Spalte auf SET finden und hinzufügen in der Tabelle. Ich benutzte Array, um Werte aus den DB/Tabellen für viele Male auszuwählen und zu erhalten, also denke ich, dass $ arrWhere nicht das Problem ist.

Antwort

1

gut, die Antwort gefunden,

für ex .:

Dies ist für mich arbeiten:

$id = 5; 
$field = 'stock'; 
$amount = 1; 

$increment = array($field => new FluentLiteral($field.' + '.$amount)); 

$fpdo->update('products')->set($increment)->where('id', $id)->execute();