PHP MySQL 数据库操作类代码示例及常见错误解析
这段代码不能写入数据库的原因是因为在执行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字段。
希望以上信息能够帮到您!
原文地址: https://www.cveoy.top/t/topic/qinE 著作权归作者所有。请勿转载和采集!