Ok, I am struggling to find a solution to this problem using the Zend_Db 
interface. I want to do the following:

$data = array(
  'orders_status' => (int)$orders_status,
  'last_modified' => 'now()');
$db->update(TABLE_ORDERS, $data, 'orders_id = ' . (int)$orders_id)

But the update() method does not understand the now() string and sends it in 
the SQL as a string literal, because it gets quoted. Instead I have to do this:

$now = date('Y-m-d H:i:s');
$data = array(
  'orders_status' => (int)$orders_status,
  'last_modified' => $now);
$db->update(TABLE_ORDERS, $data, 'orders_id = ' . (int)$orders_id)

This works of course, but the problem is I really need to set the value to the 
current date time that the query is executed, so it gets the date time stamp on 
the DB server, not on the PHP application server. Even though the values are 
going to be close, if the database is on a separate server the timestamps can 
be slightly different. Worse, if this code was running on a server farm for the 
PHP servers, each server could have slightly different timestamps, and if you 
are relying on the timestamps to be sequential, you can run into problems.

Now clearly I can hand code the SQL inserts, but that defeats the purpose of 
having the insert() function. In our existing code the insert() wrapper special 
cases the now() string, and passes it through literally.

Is there any way to do that with Zend_Db?

Regards,

Kendall Bennett, CEO
A Main Hobbies
424 Otterson Drive, Suite 160
Chico, CA 95928
1-800-705-2215 (Toll-Free)
1-530-894-0797 (Int'l & Local)
1-530-894-9049 (Fax)
http://www.amainhobbies.com

Reply via email to