您当前的位置: 站长圈 > 网页设计

阿Q老师PHP框架系列讲座之二__插入数据

来源:站长圈|0 作者:adminzzq 点击: 0
一、创建admin表
DROP TABLE IF EXISTS `test_admin`;
CREATE TABLE `test_admin` (
  `id` tinyint(4) NOT NULL auto_increment,
  `username` varchar(20) NOT NULL,
  `passwd` varchar(32) NOT NULL,
  `salt` varchar(6) NOT NULL,
  `hash` varchar(6) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=ucs2 AUTO_INCREMENT=2 ;

二、在mysql类里创建插入数据的方法:

    /**
     * 插入一条记录
     * @param data 要插入的数据数组
     */
  //创建一个向$table表中插入数据$data的方法
    public function insert($data,$table){
  //调用本类中的创建sql语句的类build_sql(),返回一条sql语句,并赋给$sql
        $sql = $this->build_sql($data,$table);
  //调用本类中的query()方法,执行sql语句,并作判断
  echo $sql;
        if(!$rows = $this->query($sql)){
            return false;
        } else {
            return $rows;
        }
    }

    /**
     * 构造sql语句
     */
    private function build_sql($data,$table,$action='insert'){
        if(is_array($data)){
            $fields = implode(",",array_keys($data)); //获取数组$data中键,并用逗号连接成字符串赋给$fields。此处的键名就是数据表中的字段名
            $values = implode("','",array_values($data));  //获取数组$data中值,并用“','”连接成字符串赋给$values。此处的健值就是数据表中对应字段的值
        }
  //如果招待的动作是插入数据 'insert'
        if($action == 'insert')
        {
   //返回一条向$table表插入数据的sql语句
            return $sql = sprintf("insert into %s(%s)values('%s')",$table,$fields,$values);
        }

    }
    /**
     * 执行sql语句,返回一个资源
     * @param $sql
     * @return 资源
     */
    public function query($sql){
       return mysql_query($sql,$this->conn);
    }
三、测试插入数据的方法
//静态方法可以不实例化,用“::”直接调用。
$myy=mysql::getinstance();
$data=array(
  'username'=>'xizi',
 'passwd'=>'123456',
 'salt'=>'rtey33',
 'hash'=>'3t6ytr'
);
$table="test_admin";
$myy->insert($data,$table,$action='insert');