2

我正在创建一个类(Datamap),它将帮助我简化模型类中的查询。基本上,这个类(Datamap)与我的 db 类一起使用。

以前对于我需要的模型中的插入语句。

$db->query("INSERT INTO test(id,name) VALUES("id","name")");

现在,有了 Datamap 类,它就像

$datamap->create("test","id=id&name=name");

下面是我创建的 Datamap 类的代码片段。

    function create($tablename,$variables){
    $id=0;
    $tbl = $this->creturnval($variables);
    $tblVal = $tbl[0];
    $tblData = $tbl[1];
    $this->db->execute("INSERT into $tablename($tblVal) VALUES($tblData);");
    $id = $this->db->lastInsertedId();
    return $id;
}


function creturnval($variables){
    $vars = explode("&",$variables);
    $count = sizeOf($vars);
    $tblVal = "";
    $tblData = "";
    for($i=0;$i<$count;$i++){
        $d = explode("=",$vars[$i]);
        $tblVal.= $d[0].",";
        $tblData.= "'".$d[1]."'".",";
    }
    $tblVal = rtrim($tblVal, ',');
    $tblData = rtrim($tblData, ',');
    $return[0] = $tblVal;
    $return[1] = $tblData;
    return $return;
}

我关心的实际上是性能问题。以前在我的模型类中,如果我只是使用$db->query(),它似乎更快,因为我不必通过 2 个函数。

现在,为了进行插入,我需要解析变量、拆分 & 等,然后处理它。

我使用这个 Datamap 类的想法实际上是为了提供更多的可维护性和标准化。这是为了防止我所有的模型类在看起来不整洁的地方有 sql 语句。

您认为这会造成可能的性能问题吗?

PS:我正在使用我为我的 Web 应用程序构建的自己的框架

感谢所有建议。

4

2 回答 2

2

我认为编写 SQL 包装器的一种更常见的方式是这样的:

$item = $datamap->create("test");
$item->setValue("id", $id);
$item->setvalue("name", $name);
$item->update(); // push to database

$datamap->create();返回一个将保存记录值的对象。setValuegetValue允许您访问它。update将新值推送到数据库。同样,您可以实现要获取的记录的 id 在$datamap->get("test", 1234);哪里。返回与 相同的对象,具有相同的功能。然后将导致 a而不是. 在插入一条记录后,您可以使用它来获取 id 并将其设置在对象中,以便您可以在该点之后对其执行 s。(对象必须跟踪它的“状态”)。1234getcreateupdateUPDATEINSERTupdatemysql_last_insert_id()UPDATE

于 2012-07-10T23:15:00.560 回答
0

经过搜索,我发现使用 Zend_db 会更好。将使用它。

于 2012-07-11T04:38:53.243 回答