我用php写了这个SQL查询:
$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' ");
这个查询工作得很好,但我想用FluentPDO转换这个查询。我想使用数组来设置值。例如:
$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;
这是查询:
$query = $this->pdo->update($table)->set($arrVal)->where($arrWhere);
$query->execute();
我认为问题在于$ arrival,无法找到正确的方法来设置和添加值到表中一列的当前值。我用数组来选择和获取值从DB/表多次,所以我认为$arrWhere不是问题。
好了,找到答案了,
为例:这是为我工作:
$id = 5;
$field = 'stock';
$amount = 1;
$increment = array($field => new FluentLiteral($field.' + '.$amount));
$fpdo->update('products')->set($increment)->where('id', $id)->execute();