<?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);
Mengikut kod, ia sepatutnya menjadi masalah sambungan. Anda boleh cuba mencetak $link
Tiada masalah apabila melihat penyataan SQL boleh dilaksanakan seperti biasa dalam pangkalan data, tetapi selepas memanggil kaedah sisipan kelas, ia tidak berfungsi.