我正在创建一个生成 sql 查询的类.我做得对吗

  • 本文关键字:查询 sql 创建 一个 php sql
  • 更新时间 :
  • 英文 :


我正在创建一个类(数据映射(,它将帮助我简化模型类中的查询。 基本上,这个类(数据映射(与我的数据库类结合使用。

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

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

现在,使用数据映射类,它将像

$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应用程序构建

感谢所有建议。

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

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

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

搜索后,我发现使用Zend_db会更好。 会使用它。

最新更新