PHP類封裝的插入數(shù)據(jù),總是插入不成功,返回false;
問題描述
<?php//數(shù)據(jù)庫操作類class Model{ private $host; //數(shù)據(jù)庫地址 private $user; //數(shù)據(jù)庫用戶名 private $pwd; //數(shù)據(jù)庫密碼 private $tabName; //表名 private $preFix; //表前綴 private $dbName; //數(shù)據(jù)庫名 private $charset; //字符 private $link=null; //數(shù)據(jù)連接對(duì)象 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('數(shù)據(jù)庫連接錯(cuò)誤');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;} }}//調(diào)用方法,為什么不成功?總是插入不進(jìn)去,提示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:按照代碼應(yīng)該是連接的問題,你可以嘗試打印$link
回答3:看代碼也沒有問題,sql語句在數(shù)據(jù)庫中也是可以正常執(zhí)行的,但是調(diào)用類的插入方法之后,就不行了,這是怎么回事?
