MySQL使用类

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: MySQL使用类

<?php

/**

  • Class Mysql

*/
class Mysql
{

// 数据库连接信息
private $dbconfig = array(
    'host' => 'localhost',
    'port' => 3306,
    'user' => 'root',
    'pwd' => '',
    'charset' => 'utf8',
    'dbname' => 'qioku'
);
// 数据库连接资源
private $link;
// 单例对象应用
private static $instance;

/**
 * 构造方法
 * 私有化构造方法,防止类在外部被实例化,但可以在类内实例化
 */
private function __construct($params = array())
{
    // 初始化属性
    $this->initAttr($params);
    // 连接数据库
    $this->connectServer();
    // 设定字符集
    $this->setCharset();
    // 选择默认数据库
    $this->selectDefaultDb();
}

/**
 * 获得单例对象的公共接口方法
 * @param array $params 数据库连接信息
 * @return object 单例的对象
 */
public static function getInstance($params=array())
{
    // 判断是否没有实例化过
    if (!self::$instance instanceof  self){
        // 实例化并保存
        self::$instance = new self($params);
    }
    return self::$instance;
}

/**
 * 初始化属性
 * @param array $params 数据库连接信息
 */
private function initAttr($params)
{
    // 初始化属性,使用array_merge()函数合并另个数组
    $this->dbconfig = array_merge($this->dbconfig,$params);
}

/**
 * 连接目标服务器
 */
private function connectServer()
{
    $host = $this->dbconfig['host'];
    $port = $this->dbconfig['port'];
    $user = $this->dbconfig['user'];
    $pwd = $this->dbconfig['pwd'];
    // 连接数据库服务器
    if ($link = mysqli_connect("$host:$port",$user,$pwd)) {
        $this->link = $link;
    }else {
        die('数据库连接失败!'.mysqli_error());
    }
}

/**
 * 选择数据库
 */
private function selectDefaultDb()
{
    // 判断dbname是否为空,空表示不选择数据库
    if ($this->dbconfig['dbname'] == ''){
        return;
    }
    $sql = "use `{$this->dbconfig['dbname']}`";
    $this->query($sql);
}

/**
 * 设定字符集
 */
private function setCharset()
{
    $sql = "set names {$this->dbconfig['charset']}";
    $this->query($sql);
}

/**
 * 转义字符串
 * $data 待转义的字符串
 * @return string 转义后的字符串
 */
public function escapeString($data)
{
    return mysqli_real_escape_string($data,$this->link);
}

/**
 * 执行sql方法
 * $sql 待执行的sql语句
 */
public function query($sql)
{
    if ($result = mysqli_query($this->link,$sql)){
        return $result;
    }else{
        echo 'SQL执行失败<br>错误的sql语句为:',$sql,'<br>';
        echo '错误代码为:',mysqli_errno($this->link),'<br>';
        echo '错误信息为:',mysqli_error($this->link),'<br>';
        die;
    }
}

/**
 * 查询单条记录
 */
public function fetchRow($sql)
{
    if ($result = $this->query($sql)){
        $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
        return $row;
    }else{
        return false;
    }
}

/**
 * 查询多条记录
 */
public static function fetchAll($sql)
{
    if ($result = self::query($sql)){
        $rows = array();
        while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){
            $rows[] = $row;
        }
        mysqli_free_result($result);
        return $rows;
    }else{
        return false;
    }

}

}

使用方法:

<?php
require './mySQLDB.class.php';
$db = mySQLDB::getInstance();

$sql = "select * from dsc_goods where cat_id=1787";
var_dump($db->fetchRow($sql));

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
关系型数据库 MySQL 数据库连接
MySQL使用总结
MySQL使用总结
44 0
|
7月前
|
存储 关系型数据库 MySQL
MySQL使用
MySQL使用
31 0
|
10月前
|
关系型数据库 MySQL PHP
php读取MySQL获取分区名称及属性信息的查询语句
php读取MySQL获取分区名称及属性信息的查询语句
79 0
|
11月前
|
关系型数据库 MySQL Unix
关于mysql 数据库表名区分大小写导致程序错误解决方法
今天在调试一个开源框架的时候,程序可以正常运行,数据也可以正常加载,但当打开个别功能列表的时候,后台报错(com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'jeewms.T_S_student' doesn't exist)找不到mysql的表,然后在数据库查看表的确是存在的啊,并且对比表名都是一样的,忽然想到之前的一个项目也遇到过这个问题。 参数缺省地在 Windows 中这个选项为 1 ,在 Unix 中为 0,所以问题出在linux上。经过配置修改重启后就ok了。希望对遇到这个问题的伙伴们有所帮助。
122 0
|
SQL Java 关系型数据库
mysql 同表 父子关系查询 【亲测可用】
mysql 同表 父子关系查询 【亲测可用】
748 0
|
关系型数据库 MySQL 数据库
MySQL 索引的用处和实现方法
MySQL 索引的用处和实现方法
MySQL 索引的用处和实现方法
|
SQL 关系型数据库 MySQL
MySQL使用类
MySQL使用类
67 0
|
关系型数据库 MySQL Java
mysql 表名和和数据库函数名称冲突的解决方法
好久没写blog了,今天刚考完网络后面还有一大段时间没考试可以学点技术了。但是,今天晚上被mysql卡了一晚上,,,因为我的表有一个叫show,因为我很少使用show这个函数。
294 0
mysql 表名和和数据库函数名称冲突的解决方法
|
SQL 安全 关系型数据库
关于MYSQL不允许修改和删除的异常报错解决方法
关于MYSQL不允许修改和删除的异常报错解决方法
312 0
|
SQL 关系型数据库 MySQL
查询MySQL字段注释的 5 种方法!(1)
查询MySQL字段注释的 5 种方法!(1)
273 0
查询MySQL字段注释的 5 种方法!(1)