PHP类封装的插入数据,总是插入不成功,返回false;

时间:2021-11-10 06:25:01 浏览:17次

问题描述

<?php//数据库操作类class Model{    private $host; //数据库地址    private $user; //数据库用户名    private $pwd; //数据库密码    private $tabName; //表名    private $preFix; //表前缀    private $dbName; //数据库名    private $charset; //字符    private $link=null; //数据连接对象    function __construct($tabName = ''){        $this->host = DB_HOST;        $this->user = DB_USER;        $this->pwd = DB_PWD;        $this->charset = CHARSET;        $this->preFix = DB_PREFIX;        $this->dbName = DB_NAME;        if($tabName == ''){           $this->tabName = $this->prefix.strtolower(substr(get_class($this),0,-5)) ;        }else{            $this->tabName = $this->preFix.$tabName;        }        $this->link = $this->connect();           }    private function connect(){        $link = @mysqli_connect($this->host,$this->user,$this->pwd,$this->dbname) or die('数据库连接错误');        if(!$link){            return false;        }        mysqli_set_charset($link,$this->charset);        return $link;    }    public function insert(array $data){        //var_dump($data);        //INSERT INTO user(name,sex,age) VALUE();        $key = $val = '';        foreach($data as $k=>$v){            $key .='`'.$k.'`,';            $val .="'".$v."',";        }        $key = rtrim($key,',');        $val = rtrim($val,',');        // var_dump($key);        // var_dump($val);        $sql = "INSERT INTO {$this->tabName} ({$key}) VALUES ({$val})";        echo $sql;        return $this->exec($sql);    }    private function exec($sql){        $result = mysqli_query($this->link,$sql);        if($result && mysqli_affected_rows($this->link) > 0){            return mysqli_insert_id($this->link) ?? mysqli_affected_rows($this->link);        }else{            return false;        }    }}//调用方法,为什么不成功?总是插入不进去,提示false;??<?php$m = new Model('user');// echo '<pre>';// var_dump($m);$_POST = array('name'=>'小驴','age'=>'20','sex'=>'1');$result = $m->insert($_POST);var_dump($result);

问题解答

回答1:

终于知道原因了!!已搞定!

回答2:

PHP类封装的插入数据,总是插入不成功,返回false;

按照代码应该是连接的问题,你可以尝试打印$link

回答3:

看代码也没有问题,sql语句在数据库中也是可以正常执行的,但是调用类的插入方法之后,就不行了,这是怎么回事?

相关推荐
评论
评论
发 布