这段代码不能写入数据库的原因是因为在执行SQL语句时,表名和字段名需要使用反引号(`)而不是单引号(')。所以正确的写法应该是:

echo $db->check("INSERT INTO `user` (`user`) values ('123')");

下面是完整的代码示例:

<?php
class sql
{
    public $host;
    public $port;
    public $user;
    public $pass;
    public $db;
    public $charset;
    //数据库初始化
    public function __construct(array $config = array())
    {
        $this->host = $config['host'] ?? '127.0.0.1';
        $this->port = $config['port'] ?? '3306';
        $this->user = $config['user'] ?? 'roo1t';
        $this->pass = $config['pass'] ?? '123456';
        $this->db =  $config['db'] ?? 'test';
        $this->charset = $config['charset'] ?? 'utf8';
    }
    //数据库链接认证
    public $link;
    public $errno;
    public $error;
    public function connect()
    {
        $this->link = @mysqli_connect($this->host, $this->user, $this->pass, $this->db, $this->port);
        if (!$this->link) {
            $this->errno = mysqli_connect_errno();
            $this->error = iconv('gbk', 'utf-8', mysqli_connect_error());
            return false;
        }

        return true;
    }
    //数据库字符集设置
    public function charset()
    {
        $res = mysqli_set_charset($this->link, $this->charset);

        //判断是否成功
        if (!$res) {
            $this->errno = mysqli_errno($this->link);
            $this->error = mysqli_error($this->link);
            return false;
        }
        return true;
    }
    //sql执行检测
    public function check($sql)
    {
        $res = mysqli_query($this->link, $sql);
        //判断是否成功
        if (!$res) {
            $this->errno = mysqli_errno($this->link);
            $this->error = mysqli_error($this->link);
            return 'false';
        }
        return $res;
    }
}



$db = array(
    'host' => '127.0.0.1',
    'port' => '3306',
    'user' => '123456',
    'pass' => '123456',
    'db' => '123456',
    'charset' => 'utf8'
);
$db = new sql($db);
echo $db->connect();
echo $db->check("INSERT INTO `user` (`user`) values ('123')");

代码解释:

  • sql 类:定义了一个基本的 MySQL 数据库操作类,包含连接、设置字符集、执行 SQL 语句等方法。
  • connect() 方法:连接数据库并验证连接是否成功。
  • charset() 方法:设置数据库连接的字符集。
  • check() 方法:执行 SQL 语句并判断执行是否成功。
  • 错误解析:使用单引号而不是反引号会导致 SQL 语句无法识别表名和字段名,从而导致插入数据失败。

注意:

  • 使用反引号 ( ) 包裹表名和字段名,以确保数据库能够正确识别它们。
  • 使用单引号 (' ') 包裹字符串值。
  • 确保数据库中存在 user 表和 user 字段。

希望以上信息能够帮到您!

PHP MySQL 数据库操作类代码示例及常见错误解析

原文地址: https://www.cveoy.top/t/topic/qinE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录