如何在使用Zend Framework時將LIMIT 1
子句添加到更新中?如何在Zend Framework中添加對更新查詢的限制?
我不得不使用Zend_Db_Table_Abstract::update()
,因爲它執行本身不像甜甜Zend_Db_Select
-類。
這樣做的原因只是預防措施,我認爲Zend_Db_Table_Abstract::update()
的語法在代碼中找到更有意義,而不是更全面的Zend_Db_Adapter_Abstract::query()
。
如何在使用Zend Framework時將LIMIT 1
子句添加到更新中?如何在Zend Framework中添加對更新查詢的限制?
我不得不使用Zend_Db_Table_Abstract::update()
,因爲它執行本身不像甜甜Zend_Db_Select
-類。
這樣做的原因只是預防措施,我認爲Zend_Db_Table_Abstract::update()
的語法在代碼中找到更有意義,而不是更全面的Zend_Db_Adapter_Abstract::query()
。
你不行。
在issue tracker處爲此確切問題創建了一個問題。但是這個功能還沒有實現。
你爲什麼要這樣做?如果要更新單條記錄,則應使用記錄的主鍵並使用
UPDATE <table> SET field=<newvalue>, ... WHERE key = <keyvalue>;
查詢。
1)它是有效的SQL,2)作爲'Zend_Db_Select',它可以包含動態輸入,其中'LIMIT 1'是額外的安全檢查(如果通常的過濾器/驗證失敗或者其他程序員寫得不好) ,3)它應該更快,因爲它應該在更新一行後停止搜索 – chelmertz 2009-11-17 13:11:40
1)。在MySQL中,任何其他的RDBMS都不會接受這種語法,所以你的代碼將不可移植(這可能是Zend Framework中沒有的原因之一)。 2)。那麼爲什麼在實際執行更新/刪除操作之前,您不檢查是否有多個記錄會影響您的業務邏輯? – wimvds 2009-11-17 13:45:08
1)當移植到另一個DBMS時,'update()'上的'LIMIT'將是一個非常小的問題,與所有其他必須平穩運行的問題相比,它是一個非常小的問題。另外,由於它在MySQL中是允許的,所以'update()'不適合它現在的位置(可配置性之外)。感謝提到它只是MySQL,但我不知道。 2)當然有效,但我會採取任何額外的安全措施。 3)取消註釋,但我相信速度可能會對更新大量行的查詢產生重大影響。 – chelmertz 2009-11-17 17:39:18
感謝您比我更好地搜索問題跟蹤器。 – chelmertz 2009-11-17 13:02:43