上面那个写错的了。这个
<?php 
/*
  class name : SQLBuilder
  使用方法: 
   $record = array();
   $record['username'] = "'xxxx'";
   $record['password'] = "'xxxx'";
   $sqlbuilder = new SQLBuilder();
   $sql = $sqlbuilder->getInsertSQL('users',$record);
   或:
   $sql = $sqlbuilder->getUpdateSQL('users',$record,'userid = 1');
   $db->Execute($sql);
*/class SQLBuilder {    function getUpdateSQL($table, $fields, $where) {
        $sql1 = '';
        $sql = '';
        $k = '';
        $v = '';
        
        if (count($fields) == 0) {
            return $sql;
        }        foreach($fileds as $k => $v) {
            $sql1 .= ",$k = $v";
        }
        if(strlen($sql1) > 0) {
            $sql1 = substr($sql1,1);
            if (!empty($where)) {
                $sql ="update $table set $sql1 "; 
            } 
            else {
                $sql = "update $table set $sql1 where $where";
            }
        }        return $sql;
    }
    
    //**
    function getInsertSQL($table, $fields) {
        $sql1 = '';
        $sql = '';
        $fs = '';
        $vs = '';
        $k = '';
        $v = '';
        if (count($fileds) == 0) {
            return $sql;
        }
        foreach($fields as $k => $v) {
            $fs .= ",$k";
            $vs .= ",$v";
        }
        if (strlen($fs) > 0) {
            $fs = substr($fs,1);
            $vs = substr($vs,1);
            $sql = "Insert into $table ($fs) values($vs)";
        }
        return $sql;
    }}?>

解决方案 »

  1.   

    请说明一下用途!
    ----------------
    用途是这样的。如果我用表单提交了一大堆的数据,需要加入到数据库中。那我就要手动构造一个很长的 sql . 而往往这类更新数据库的单元又是有增加与更新两种功能与一体的。所以程序看起来就很复杂。不够简捷。
    所以我就写了这个类:SQLBuilder用法:
    如要插入数据到users 表我就这样写
    $record = array();
    $record['username'] = "'user 1'";
    $record['password'] = "'password'";
    $sqlbuilder = new SQLBuilder();
    $sql = $sqlbuilder.getInsertSQL('users',$record);这样就可以得到 $sql = 'Insert into users (username,password) values('user 1','password')';
    这是我用 ADODB 里得到的。
    ADODB 功能更好些。只是后来我用了 ADODB_lite 。这个速度快。但没有 GetInsertSQL 与 GetUpdateSQL 了。所以我只有自己写了一个 SQLBuilder。