Ok thanks, I will try that. But wouldn't that be a pretty heavy weight solution to this problem, since an entire dynamic object needs to be created and garbage collected just to pass a string literal in? Surely there must be a more efficient solution :(
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 ________________________________ From: Håkan Medin <[email protected]> Date: Mon, 15 Jun 2009 23:32:20 -0700 To: Kendall Bennett <[email protected]> Cc: Zend Framework General <[email protected]> Subject: Re: [fw-general] Zend_Db and the now() keyword? Hi, Try using Zend_Db_Expr: $data = array( 'orders_status' => (int)$orders_status, 'last_modified' => new Zend_Db_Expr('NOW()')); Regards Håkan Medin On Tue, Jun 16, 2009 at 2:46 AM, Kendall Bennett <[email protected]> wrote: 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 <http://www.amainhobbies.com/>
