博客列表 >423-MYSQL入门

423-MYSQL入门

小威的博客
小威的博客原创
2018年04月24日 13:11:12675浏览
  • mysqli数据库连接

 步骤:

 1. 创建连接参数 2. 调用连接函数,返回连接资源  3. 判断是否连接成功 4. 选择数据库 5. 设置默认字符集

用到的函数

 * 1. mysqli_connect($host,$user,$pass)
 * 2. mysqli_connect_errno($db)
 * 3. mysqli_connect_error($db)
 * 4. mysqli_select_db($dbName)
 * 5. mysqli_set_charset('utf8')


1. 创建连接参数: 因为连接参数不会经常变化,所以推荐使用常量

<?php
define ('DB_HOST', 'localhost');//连接地址,现为本地,可为远程IP地址
define ('DB_USER', 'root');//数据库连接帐号
define ('DB_PASS', 'uyYYFGZxuVactZc7');//数据库连接密码
define ('DB_NAME', 'wd2018');//数据库名称
define ('DB_CHAR', 'utf8');//数据库编码

2. 调用连接函数,成功则返回mysqli对象,失败返回false

$db = @mysqli_connect(DB_HOST, DB_USER, DB_PASS);
var_dump($db);die();

3. 测试连接是否成功?  连接失败一定会返回错误编号,可以根据编号判断,也可用 $db是否为false进行判断

 if (mysqli_connect_errno($db)) {
    exit('连接失败'.mysqli_connect_error($db));
 }
echo '<h1>连接成功</h1>';

4. 选择要操作的数据库

mysqli_select_db($db, DB_NAME);

5. 设置默认字符集

mysqli_set_charset($db, DB_CHAR);


  • mysqli数据库连接 简化版

1.先创建数据库连接参数 mysqli_config.php

<?php 
//配置数据库连接参数  使用常量
define ('DB_HOST','127.0.0.1');
define ('DB_USER','root');
define ('DB_PASS','uyYYFGZxuVactZc7');
define ('DB_NAME','wd2018');
define ('DB_CHAR','utf8');

2.mysqli调整参数 mysqli_connect.php

<?php
//1.导入数据库连接参数
require 'mysqli_config.php';
//2.调用连接函数,返回连接资源
$db = @mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME) or die('连接数据库失败'.mysqli_connect_error($db));
//3.设置默认字符集
mysqli_set_charset($db, DB_CHAR);

一般实际开发中 推荐使用第二种简化版的  一是为了代码简化  二是为了方便日后项目整体参数修改

  • MYSQLI数据库的操作

一 ,增   INSERT  向数据表中新增数据

用到的函数:

1.mysqli_query(),

2.mysqli_errno(),mysqli_error(),

3.mysqli_affected_rows(),mysqli_insert_id(),

4.mysqli_close()

实例

<?php
//1.连接数据库参数
require 'mysqli_connect.php';

//2.准备待添加的sql语句
// $sql = "INSERT INTO 表名 (字段名,字段名,字段名) VALUES (null,'字段值中文',字段值,字段值)";
//INSERT是标准SQL语法,不仅可插入一条,也可以插入多条,新记录之间用逗号分开,自增主键id可省
//$sql = "INSERT  staff (name,sex,age,salary) VALUES
//        ('小昭',1,20,2400),('宋青书',0,40,1800),('成昆',0,70,9000)";
//针对MySQL数据库,还有一个更高效的插入数据的方法,不过每次只能插入一条记录 
$sql = "INSERT wd2018 SET user_name='chesi001',sex=1, age=58, salary=9999"; 

//3.执行查询:成功返回true,失败返回false
//$res = mysqli_query($db, $sql);
//var_dump($res);exit;

if (mysqli_query($db, $sql)) {
    if (mysqli_affected_rows($db) > 0) {
        //返回受影响的记录数与新增主键id
        echo '成功的新增了'.mysqli_affected_rows($db).'条记录,<br>新记录的主键id是:'.mysqli_insert_id($db);

    } else {
        echo '没有记录被新增';
    }
} else { //项目上线后,不应该将出错信息显示出来,否则会暴露数据库的相关信息
    exit(mysqli_errno($db).':'.mysqli_error($db));
}

//4.关闭连接
mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例


二,删 DELETE 删除数据表中的数据

实例

<?php

//1.连接数据库
require 'mysqli_connect.php';

//2.待删除的参数 准备sql语句
$sql = "DELETE FROM wd2018  WHERE user_id=2";

//3.执行查询:成功返回true,失败返回false

if (mysqli_query($db, $sql)) {
    if (mysqli_affected_rows($db) > 0) {
        //返回受影响的记录数
        echo '成功的删除了'.mysqli_affected_rows($db).'条记录';

    } else {
        echo '没有记录被删除';
    }
} else {
    exit(mysqli_errno($db).':'.mysqli_error($db));
}

//4.关闭连接
mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例


三,改 UPDATE 更新数据表中的数据

* 注意: 更新与新增不同,它是基于查询来实现的,推荐也必须要有更新条件

实例

<?php
//1.连接数据库
require 'mysqli_connect.php';

//2.待更新的字段参数值  准备sql语句
$sql = "UPDATE wd2018 SET user_name=admins WHERE user_id=1";

//3.执行查询:成功返回true,失败返回false

if (mysqli_query($db, $sql)) {
    if (mysqli_affected_rows($db) > 0) {
        //返回受影响的记录数
        echo '成功的更新了'.mysqli_affected_rows($db).'条记录';

    } else {
        echo '没有记录被更新';
    }
} else {
    exit(mysqli_errno($db).':'.mysqli_error($db));
}

//4.关闭连接
mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例


四-1,查 SELECT 查询操作


1. 查询操作

2. 涉及的3个函数:

 * 2-1. mysqli_query($db, $sql):执行SQL语句,返回结果集

 * 2-2. mysqli_errno($db):返回最后一次函数执行的错误代码

 * 2-3. mysqli_error($db):返回最后一次函数执行的错误信息

 * 2-4. mysqli_num_rows($res): 返回结果集中的记录数量

 * 2-5. mysqli_fetch_row($res): 以索引数组返回一条记录

 * 2-5. mysqli_fetch_assoc($res): 以关联数组返回一条记录

 * 2-5. mysqli_fetch_array($res,MYSQLI_NUM): 以索引数组返回一条记录

 * 2-5. mysqli_fetch_array($res,MYSQLI_ASSOC): 以关联数组返回一条记录

 * 2-5. mysqli_fetch_array($res,MYSQLI_BOTH): 以索引和关系并存数组返回一条记录

 * 2-5. mysqli_fetch_object($res): 以对象方式返回一条记录

 * mysqli_free_result($result);

 * 2-4. mysqli_close($db):关闭当前的数据连接

3. 查询步骤:

 *  3-1.连接数据库

 *  3-2.准备SQL语句

 *  3-3.执行查询

 *  3-4.检测结果

 *  3-5.如果是select,则返回结果集

 *  3-5-1.如果是insert/update/delete:则返回受影响的记录数量

 *  3-6.关闭数据库连接

实例

<?php
//1.连接数据库,require 不是函数,后面不用加括号
require 'mysqli_connect.php';

//2.准备SQL语句
$sql = "SELECT user_name FROM user";
//$sql = "SELECT name AS 姓名,salary AS 工资 FROM staff WHERE age>90";

//3.执行查询:成功会返回结果集对象,失败返回false
$result = mysqli_query($db, $sql);
//var_dump($result);die();
//4.检测结果
//如果结果集存在
if (false != $result) { //这是写只是语义性更强
    //如果结果集中存在记录,至少有一条
//    if (mysqli_num_rows($result) > 0) {
    //mysqli_affected_rows($db)也可以完成同样的检测工作,注意参数是连接对象$db,不是结果集对象
    if (mysqli_affected_rows($db) > 0) {
//        echo '共计:'.mysqli_num_rows($result).'条记录<br>';
        echo '共计:'.mysqli_affected_rows($db).'条记录~~<br>';
        //5.处理结果集
        //5-1:获取索引部分
//        while($row = mysqli_fetch_array($result, MYSQLI_NUM)){
        //获取索引部分的快捷方法
//        while($row = mysqli_fetch_row($result)){
        //5-2:获取关联部分
//        while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
        //获取关联部分的快捷方法
//        while($row = mysqli_fetch_assoc($result)){
        //5-3:索引+关联
//        while($row = mysqli_fetch_array($result, MYSQLI_BOTH)){
        //5-4: 获取索引+关联的快捷方法就是不传入第二个参数,也就是默认值
//        while($row = mysqli_fetch_array($result)){
        //5-4:以对象的方式
        while($row = mysqli_fetch_object($result)){
//            var_export($row);//以字符串方式表示查询结查
            //如果是对象,可以用指向符来访问
            echo $row->name.'--'.$row->salary;
            echo '<hr>';

            //以变量方式表示,表示的内容更加完整丰富
//            var_dump($row);
        }
    } else {
        echo '没有符合条件的记录';
    }
    //查询失败的处理方式
} else {
    //必须要用exit()或die()终止脚本执行,否则后面的语句还会执行并会报错
    exit('查询失败'.mysqli_errno($db).':'.mysqli_error($db));
}

//5.释放结果集(仅针对select)
mysqli_free_result($result);

//6.关闭数据库连接
mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例


查询操作之简化版


实例

//1.连接数据库,require 不是函数,后面不用加括号
require 'mysqli_connect.php';

//2.准备SQL语句
$sql = "SELECT user_name FROM user";

//3.执行查询:成功会返回结果集对象,失败返回false
if ($result = mysqli_query($db, $sql)){
    if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {
            var_export(print_r($row),true);
            echo '<hr>';
        }
    }
} else {
    exit(mysqli_errno($db).':'.mysqli_error($db));
}

//4.释放结果集(仅针对select)
mysqli_free_result($result);

//5.关闭数据库连接
mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例


四-2,查 QUERY 执行查询

1. 数据库的查询:不仅仅包括查询,还包括新增,更新与删除操作,即读写操作,或者访问操作

2. 涉及的3个函数:

 * 2-1. mysqli_query($db, $sql):执行SQL语句

 * 2-2. mysqli_errno($db):返回最后一次函数执行的错误代码

 * 2-3. mysqli_error($db):返回最后一次函数执行的错误信息

 * 2-4. mysqli_close($db):关闭当前的数据连接

3. 查询步骤:

 *  3-1.连接数据库   *  3-2.执行查询    *  3-3.关闭数据库连接


实例

<?php
//1.连接数据库,require 不是函数,后面不用加括号
require 'mysqli_connect.php';


//2.执行查询
if($res = mysqli_query($db, "SELECT user_id,user_name FROM user")) {
    while($row = mysqli_fetch_assoc($res)) {
        var_export($row);
        print '<hr>';
    }
} else {
    exit('查询失败'.mysqli_errno($db).':'.mysqli_error($db));
}

//释放结果集(仅针对select)
mysqli_free_result($res);

//4.关闭数据库连接
mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例



多语句执行与多结果集处理技术

涉及函数:

 * mysqli_multi_query($db,$sql):执行多个查询语句

 * mysqli_store_result($db):获取最后一次查询语句产生的结果集

 * mysqli_more_results($db):检测多次查询是否还是更多的结果集,返回布尔值

 * mysqli_next_result($db):从多结果集中获取下一下结果集

实例

<?php
//1.连接数据库
require 'mysqli_connect.php';

//2.准备多条查询课程,每条语句之间必须引用字符串连接
//任务1: 按性别统计工资的平均数,四舍五入后保留2位小数
$sql  = "SELECT sex, ROUND(AVG(salary),2)  FROM staff GROUP BY sex;";
//任务2: 查询年龄大于50的员工信息
$sql .= "SELECT name,age FROM staff WHERE age>50;";
//任务3: 查询工资小于5000的员工信息
$sql .= "SELECT name,salary FROM staff WHERE salary<5000;";

//3.执行多语言查询

// * 1.mysqli_multi_query()与之前的mysqli_query()不同,
// * 查询成功并不返回结果集而是true,失败返回false
// * 2.多语句查询的当前结果集要用专用函数:mysqli_store_result()来获取
// * 成功返回结果集对象,失败返回false
// * 3.mysqli_more_result():判断多语句查询结果中是否还存在更多的结果集,
// * 如果有返回true,否则返回false
// * 4.mysqli_next_result():取出下一下个结果,成功true,失败false


//判断当前查询是否成功?
$num = 1;
if(mysqli_multi_query($db, $sql)) {
    echo '第'.$num.'个结果子集中的数据:<br>';
    //如果获取到了当前结果子集,则遍历当前的结果子集中的数据
    while($result = mysqli_store_result($db)) {
        //如果当前结果子集中存在满足条件的记录的话,就进行输出
        if (mysqli_affected_rows($db) > 0 ) {
            //循环遍历结果子集中的每一条记录,解析到一维数组中
            while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
                print_r($row); //打印输出数据
                echo '<br>';
            }
            //释放当前的结果子集
            mysqli_free_result($result);
        } else {  //提示用户
            echo '当前结果集中没有满足条件的数据~~';
        }


        //判断当前的结果集中,是否还有更多的结果子集
        if (mysqli_more_results($db)) {
            $num++;
            echo '<hr color="red">第'.$num.'个结果子集中的数据:<br>';

            //将结果集指针指向下一下结果子集
            mysqli_next_result($db);
        }
    }
} else {
    //查询失败,并给出错误编号与信息提示
    exit(mysqli_errno($db).':'.mysqli_error($db));
}

//4.释放当前的数据库连接
mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
// *  执行多条SQL语句,新增与更新

//1.连接数据库
require 'mysqli_connect.php';

//2.准备多条查询语句
//SQL语句二要求:1.第一条必须有效;2.结尾必须要有分号,否则后面的SQL语句无效
//新增一条记录,
$sql = 'INSERT IGNORE  staff SET name="欧阳克";';
//更新id=5的张无忌salary改成5800
$sql .= 'UPDATE staff SET salary=8800 WHERE staff_id=7;';

//3.执行查询,并检测
if (mysqli_multi_query($db, $sql)) {
    //判断是否是新增操作
    if (mysqli_affected_rows($db) > 0) {
        //判断是否是新增成功
        if(mysqli_insert_id($db)>0) {
            echo '新增'.mysqli_affected_rows($db).'条记录,主键id:'.mysqli_insert_id($db);
        }
        echo '<br>成功的更新了'.mysqli_affected_rows($db).'条记录';
    } else{
        echo '没有新增任何记录,也没有记录被更新';
    }
} else {  //出错提示
    exit(mysqli_errno($db).':'.mysqli_error($db));
}

//4.关闭连接
mysqli_close($db);

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议