非常基本的问题,我正在制作将生成对数据库的查询的函数。我有两种方法,我不知道哪个更好。
首先是制作一个更大的函数来生成我需要的任何查询,所以基本上:
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();
}
或者类似的东西,不确定这个确切的代码是否有效,因为我还没有做到。
无论如何,通过在一个函数中生成查询,我可以只在列表中传递查询并执行一个循环来生成并执行所有查询。但是感觉还是不对。是这样完成的,还是我错过了不同的、更好的解决方案?