MySQL—day4(php)

一、 MySQL天龙八部

1.连接数据库

mysqli_connect(主机,用户名,密码)
@:不显示系统错误
$link = @mysqli_connect('localhost','root','');

2.判断是否连接成功

一般只是处理出现错误的情况。如果错误处理完成之后继续向后。

mysqli_connect_error()
mysqli_connect_errno()

if($link===false){
    echo mysqli_connect_error($link);
    echo mysqli_connect_errno($link);
    die;
}

3.选择数据库

mysqli_select_db()
mysqli_error()
mysqli_errno()

$res = mysqli_select_db($link,'xmr');
if($res===false){
    echo mysqli_error($link);
    echo mysqli_errno($link);
    die;
}

4.设置字符集

mysqli_set_charset()

$res = mysqli_set_charset($link,'utf8');
if($res===false){
    echo mysqli_error($link);
    echo mysqli_errno($link);
    die;
}

5.准备SQL语句

$sql = 'select * from student;';

6.执行SQL

mysqli_query();

$res = mysqli_query($link,$sql);
if($res===false){
    echo mysqli_error($link);
    echo mysqli_errno($link);
    die;
}

7.处理结果集

从结果集中取得行,一条条获取
mysqli_fetch_row()

从结果集中取得一行作为数字数组或关联数组
mysqli_fetch_array()
// 数字数组
$row=mysqli_fetch_array($result,MYSQLI_NUM);
// 关联数组
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);

从结果集中取得一行作为关联数组
mysqli_fetch_assoc()

从结果集中取得所有行作为关联数组
mysqli_fetch_all()
// 获取数据 
mysqli_fetch_all($result,MYSQLI_ASSOC);

假设 websites 表有一个自动生成的 ID 字段。返回最后一次查询中的 ID
mysqli_insert_id()

从不同的查询中输出所影响记录行数
mysqli_affected_rows()

8.释放资源关闭数据库连接

mysqli_free_result()

mysqli_close();

二、 代码重用的办法

1.代码包含

将基础代码比如连接,选择数据库,设置字符集写在一个文件中,需要使用的地方直接引用进来。

1) 添加数据

先创建一个文章数据表:

image.png
CREATE TABLE `article` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL COMMENT '文章的标题',
  `content` text NOT NULL COMMENT '文字的内容',
  `user_name` varchar(30) NOT NULL COMMENT '用户名',
  `add_time` datetime NOT NULL COMMENT '添加时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建前端页面:

image.png

设计后端的逻辑处理:

image.png

2) 查看发表的文章

image.png

3) 文章列表

image.png

4) 文章的删除

image.png

2.函数封装

1) 数据连接函数

需要做什么: 连接数据 设置字符集 选择数据库

返回: 连接的资源

函数的参数: 主机 端口 用户名 密码 字符集 数据库

默认值: 端口 字符集 默认值一般设计在函数的最后

/*
*@desc 数据库连接函数
*@param $host string 数据库的主机地址
*@param $user string 数据库的用户名
*@param $pass string 数据库的密码
*@param $db_name string 数据库的数据库名称
*@param $port int 数据库的端口 默认3306
*@param $charset string 字符集 默认utf8
*@return false | $link  bool|object 连接失败|连接的资源
*/
function db_connect($host,$user,$pass,$db_name,$port=3306,$charset='utf8'){
    global $error;
    global $errno;
    
    //判断端口是否默认
    if($port!=3306){
        $host = $host . ':' . $port;
    }
    //1. 连接数据库
    $link = @mysqli_connect($host,$user,$pass);
    
    //2. 判断是否连接成功
    if($link===false){
        $error =  mysqli_connect_error($link);
        $errno =  mysqli_connect_errno($link);
        return false;
    }
    
    //3. 选择数据库
    $res = mysqli_select_db($link,$db_name);
    if($res===false){
        $error =  mysqli_error($link);
        $errno =  mysqli_errno($link);
        return false;
    }
    
    //4. 设置字符集
    $res = mysqli_set_charset($link,$charset);
    if($res===false){
        $error =  mysqli_error($link);
        $errno =  mysqli_errno($link);
        return false;
    }
    
    return $link;
}

2) 错误处理函数

/*
*@desc 获取错误信息
*@return array 错误信息数组
*/
function get_error(){
    global $error;
    global $errno;
    global $debug;
    if($debug){
       return [
           'error' => $error,
           'errno' => $errno
       ];
    }
}

3) 插入函数

/*
* @desc db_insert 数据库插入操作
* @param Slink object 数据库的连接资源
* @param Stable string 数据表
* @param $data array 要插入的数据
* @param $get_ id bool 是否需要返回插入行的ID
* @return bool/int bool 表示是否插入成功,int表示插入行的ID
*/
function db_insert($link, $table, $data, $get_id=false) {
    global  $error;
    global $errno;
    if(!is_array($data)) {
        $error = ' 数据库数据的插入格式不合法,必须是数组格式' ;
        $errno = 1001;
    return false;
    }
    $data = parse_array($data) ;
    $fildes = implode(', ' ,array_keys($data)) ;
    $values = implode(', ' ,array_values($data)) ; 
    $sql = "insert into {$table} ({$fildes}) values ({$values}) ;";
    //执行SQL
    $rs = mysqli_query ($link, $sql) ;
    if($rs===false) {
        $error = 'sq1 语法错误';
        $errno = 1002;
        return false;
    }
    if($rs && mysqli_affected_rows($link)) {
        if($get_id) { 
            return mysqli_insert_id($link) ;
        }
        return true ;
    }
    $error = '插入的数据不匹配';
    $errno = 1003;
    return false;
}

9) 删除函数

/*
*@desc delete 数据库刪除操作
*@param $link object 数据库连接资源
*@param $table string 数据表
*@param $where string 条件
*@retuan bool true 表示刪除成功
*/
function db_delete($link, $table, $where) {
    global $error;
    global $errno;
    if(!is_string ($where)) {
        $error = '刪除条件珸法不正碗,必須是字符串格式';
        $errno = 1004;
        return false;
    }
    $sql = "delete from {$table} where $where";
    $rs = mysqli_query ($link, $sql);

    if($rs=== false){
        $error = 'sql 语法错误';
        $errno = 1002;
        return false;
    }

    if($rs && mysqli_affected_rows($link)) {
        return true;
    }
    $error = ' 未找到刪除的数据';
    $errno = 1005;
    return false;
}

10) 更新函数

/**
 *@desc 更新操作
 *@param $link object 连接状态
 *@param $table string 数据表
 *@param $set mixd 要修改的数据数组/字符串
 *@param $where string 更新条件
 */
function db_update ($link, $table, $set, $where) {
    global $error;
    global $errno;
  
    if(!is_string($where)) {
        $error ='跟新条件语法不正确,必须是字符串格式';
        $errno = 1007;
        return false;
    }
    if(is_array($set)){
        $set = parse_array($set);
        $set = parset_set ($set);
    }
    //如果输入和字符串都不是的话,错误处理
    if(!is_string($set)){
        $error = '更新新语法错误';
        $errno = 1006;
        return false;
    }
    $sql = "update {$table} set {$set} where $where; ";
    $res = mysqli_query ($link, $sql) ;
    
    //判断语法是否错误
    if($res===false) {
        $error = 'sql 语法错误';
        $errno = 1002;
        return false;
    }
    //正确更新返回true
    if($res && mysqli_affected_rows($link)) { 
        return true ;
    }
    //没有跟新的内容

    return true;
}

12) 查询函数

/*
*@desc select 数据库查询操作
*@param $fields string 数据库的字符段
*@param $table string 结果集类型
*@param $where string 条件
*@param $group string 以字段进行分组
*@param $having string 将执行$group后返回的结果再次进行过滤
*@param $order string 排序
*@param $limit string 限制条件
*@retuan bool true 表示查询成功
*/
function db_select($link, $fields, $table , $arr_type,$where=null, $group=null, $having=null, $order=null, $limit=null){
    if(is_string($table)){
        $table = $table;
    }else if(is_array($table)){
        $tables = implode(',',$table);
    }
    
    if(is_string($fields)) {
        $fields = $fields;
    }else if(is_array($fields)){
        $fields = implode(',',$fields);
    }
    
    $sql = "select {$fields} from {$table}";
    if($where){
        if(!is_string ($where)){
            $error = '刪除条件珸法不正碗,必須是字符串格式';
            $errno = 1004;
            return false;
        }
        $sql .= " where {$where}";
    }

    if ($group) {
        $sql .= " group by $group";
    }
    
    if($having) {
        $sql .= " having {$having}";
    }
    if($order){ 
        $sql .= " order by {$order}";
    }
    if($limit){
        $sql .= " limit {$limit}";
    }

    $res = mysqli_query($link, $sql);

    if($res && mysqli_num_rows($res)){
        return mysqli_fetch_all($res, $arr_type); 
    }

    return false;
}

三、创建php项目文件

  • pro
    • common:封装
    • lib:库
    • config:配置文件
    • upload:上传资源
    • api:接口返回
    • index:前端
    • admin:后端
    • static:静态文件
      • css
      • js
      • html

你可能感兴趣的:(MySQL—day4(php))