2

Zend_Db を使用して、次のような更新を試みています。

UPDATE `TABLE` SET
  column = column + 'new value'
WHERE
  foo = 'bar'

あなたの前にこれをやったことがありますか?出来ますか?ありがとう

4

1 に答える 1

2

Zend_Db_Exprの助けを借りて、これは可能です。

例:

$newValue = 101;
$data     = array('column' =>
                  new Zend_Db_Expr($db->quoteInto('column + ?', $newValue)));
$where    = $db->quoteInto('foo = ?', 'bar');

$updated = $db->update('TABLE', $data, $where);

結果のクエリ:

UPDATE `TABLE` SET `column` = `column` + 101 WHERE `foo` = 'bar';

文字列を追加する方法を尋ねている場合、コードは似ていますが+、文字データを処理するときに演算子を使用することはできません。代わりに、CONCAT()を使用してください。

たとえば、$data配列を次のように変更します。

$data  = array('varcharCol' =>
               new Zend_Db_Expr(
                   $db->quoteInto('CONCAT(varcharCol, ?)', ' append more text!')
         ));
于 2012-06-05T17:44:23.867 に答える