2010-01-07 74 views
1

有沒有一種合乎邏輯(和可能)的方式來做這樣的事情?PHP mySQL UPDATE SET LIKE%value

UPDATE $table SET LIKE %_checkbox = '' WHERE id='$id' 

我有一個像allowed_checkbox和types_checkbox領域,它們是動態發送到數據庫腳本。引用列名時可以使用通配符嗎?

回答

2

你已經有了一點Frankenstein語法。在編譯SQL之前,服務器需要知道表名和列名 - 所以你不能直接執行你的操作。

您的php代碼是否沒有數據庫架構的預先知識?

您使用的關鍵字是動態 - 您可以使用針對MySQL INFORMATION_SCHEMA.COLUMNS表的查詢找到匹配的列名稱。您可以每次更新完成一次,這會很昂貴,或者一旦在應用程序啓動時爲所需的所有表提取架構。

+0

感謝您的額外建議馬丁。我知道這是不對的,但只是在尋找想法。我猜想,我的Franky語法看起來很重要。再次感謝。 – jay 2010-01-07 02:38:54

1

不需要。您將不得不生成SQL字符串,然後單獨執行它。如果你試圖做這樣的事情,那麼你可能已經有了一個糟糕的模式設計。

+0

好的。這是我爲處理數據庫函數而構建的類。我可以添加任何元素到一個窗體,它將通過$ _POST上的簡單函數調用來處理它們。我想我將不得不重新考慮如何處理這部分內容。感謝您的想法。 – jay 2010-01-07 00:42:46