can I use db_update to update a field ( appending a string to the current string in the database )
You can still use db_update() just with an expression() instead of fields(), e.g.

db_update('my_module_table')
  -&gt;expression('myfield', 'myfield + :newstring', array(':newstring' =&gt; 'Some string'))
  -&gt;execute();


Although it strikes me that still wouldn't work as you're trying to concatenate strings (the + operator doesn't perform string concatenation as far as I know). This should do it:

db_update('my_module_table')
  -&gt;expression('myfield', 'CONCAT(myfield, :newstring)', array(':newstring' =&gt; 'Some string'))
  -&gt;execute();