cari

Rumah  >  Soal Jawab  >  teks badan

Apabila memasukkan data yang dikapsulkan oleh kelas PHP, sisipan sentiasa tidak berjaya dan palsu dikembalikan;

<?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);

A _ Q _i_A _ Q _i_1172 hari yang lalu1041

membalas semua(6)saya akan balas

  • 小晴子

    小晴子2021-11-10 10:29:29

    http://x80176m.cn/Penyata Rangkaian Maklumat Helian Yunyun

    balas
    0
  • 小晴子

    小晴子2021-11-10 10:29:00

    http://p42v77y.cn/Linghu Ruihao Sokongan Rangkaian Maklumat

    balas
    0
  • A _ Q _i_

    A _ Q _i_2021-10-13 18:07:13

    Akhirnya saya tahu sebabnya! ! Selesai!

    balas
    1
  • autoload

    autoload2021-10-13 14:58:16

    image.png

    Mengikut kod, ia sepatutnya menjadi masalah sambungan. Anda boleh cuba mencetak $link

    balas
    0
  • A _ Q _i_

    Sambungan berjaya, tetapi pernyataan SQL tidak boleh dilaksanakan.

    A _ Q _i_ · 2021-10-13 16:39:35
  • A _ Q _i_

    A _ Q _i_2021-10-13 10:22:50

    Tiada masalah apabila melihat penyataan SQL boleh dilaksanakan seperti biasa dalam pangkalan data, tetapi selepas memanggil kaedah sisipan kelas, ia tidak berfungsi.

    balas
    0
  • Batalbalas