非常基本的問題,我正在做的功能,將生成查詢數據庫。我有兩種方法來解決這個問題,我不知道哪個更好。php函數生成查詢到數據庫
首先是製作一個更大的功能產生任何查詢我所需要的,所以基本上:
function generateQuery($object, $queryType, $tableName, $conditions = null) {
//Then in here some more complex code that generates query,
//some of stuff like double if shorthands etc, for example:
$string = ($queryType === "INSERT") ? "INSERT INTO {$table} (" : (($queryType === "UPDATE") ? "UPDATE {$table} SET" : "SELECT");
//So all the code for generating INSERT, UPDATE and SELECT in one function
//full of conditions.
}
或者我可以只寫單獨的功能,每個類型的查詢。最後,第一個解決方案根本就沒有那麼複雜,第二個解決方案會在代碼中做一些重複,但它確實感覺有點不對勁。
再說我以後要使用PDO的交易,所以我會像這樣的功能:
function launchQueries($list) {
$this->handler->beginTransaction();
for($i = 0; $i < count($list); $i++)
{
$this ->launchQuery($list[i]->object, $list[i]->$table, $list[i]->queryType, $list[i]->conditions);
}
$this->handler->commit();
}
或者類似的東西,不知道這個確切的代碼會工作,因爲我還沒有使它然而。
無論如何,通過在一個函數中生成查詢,我可以在列表中傳遞查詢,並執行一個循環來生成並執行它們。但它仍然感覺不對。它是這樣完成的,還是我錯過了不同的更好的解決方案?
還有就是皮膚貓不止一種方法。沒有人會在所有情況下都做到最好。 – 2013-09-21 10:58:22
最好的方法顯然是** NOT **來生成查詢。 SQL比你想像的要豐富得多。它不是幾個愚蠢的運營商的限制。 –
我對這個主題比較陌生,所以還有其他方法可以在PHP中對MySQL數據庫進行操作,而不是在最後查詢字符串?無論我做什麼操作,似乎PHP和MySQL之間的唯一媒介最終是查詢?也許我的項目很容易超出查詢範圍?你到底什麼意思? –