非常基本的问题,我正在做的功能,将生成查询数据库。我有两种方法来解决这个问题,我不知道哪个更好。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之间的唯一媒介最终是查询?也许我的项目很容易超出查询范围?你到底什么意思? –