php的MySQL操作(二)——mysqli扩展

mysqli扩展的安装

  1. 打开 php 配置文件 php.ini,开启 extension=php_mysqli.dll
  2. 配置 extension_dir="ext文件所在目录"(ext 即 extension 缩写,例:xampp默认路径 extension_dir="C:\xampp\php\ext")
  3. 重启服务器
  4. 执行 phpinfo(); 如图即配置成功
  5. 另一种验证方式 extension_loaded('mysqli') 返回 true 即加载成功; function_exists('mysqli_connect') 返回 true 也是加载成功; get_loaded_extension() 返回是已经安装好的php扩展的数组

学习步骤

以下学习以面向对象为主,面向过程次之

  1. 建立到MySQL连接
  2. 打开指定的数据库
  3. 设置默认客户端的字符集
  4. 执行SQL查询
  5. 释放结果集
  6. 关闭连接

建立连接与打开指定数据库

$mysqli = new mysqli('localhost', 'root', 'password'); // 得到mysqli对象
$mysqli->select_db('db_name');
复制代码

另一种连接方法

$mysqli = new mysqli();
$mysqli->connect('127.0.0.1', 'root', 'password'); // 同样可以得到mysqli对象
$mysqli->select_db('db_name');
复制代码

也可以建立连接的同时直接打开数据库

$mysqli = new mysqli('localhost', 'root', 'password', 'db_name'); // 第四个参数为数据库名字
复制代码

连接失败时

if(mysqli->connect_errno){ // connect_errno 产生错误编号
    die('Connect Error: ' . $mysqli->connect_error); // connect_error 产生错误信息 这两个是属性 不带() 
}
复制代码

获取客户端信息如下

$mysqli->client_info; // 上面是属性 下面是方法 都可以获得客户端信息
$mysqli->get_client_info(); // 同理 server_info 是服务端信息
复制代码

设置字符集

$mysqli->set_charset('utf8');
复制代码

关闭连接

$mysqli->close();
复制代码

执行SQL查询

$sql = 'CREATE TABLE IF NOT EXISTS table_name(
    id tinyint unsigned auto_increment key,
    username varchar(20) not null
);';
$res = $mysqli->query($sql); // 成功返回true
复制代码

执行 select/desc/describe/show/explain 时 成功返回 mysqli_result 对象 失败返回false 其他语句成功返回true 失败返回false

// 插入操作
$sql = "INSERT table_name(username, password) VALUES('wangjiaqun', '123')"; // 插入单条
$sql = "INSERT table_name(username, password) VALUES('wangjiaqun', '123'), ('lishipeng', '123'), ('huliyuan', '123'), ('hejinhu', '123')"; // 插入多条
$res = $mysqli->query($sql);
if($res){
    // 得到插入成功产生的AUTO_INCREMENT的值
    echo '恭喜您,您是本站第' . $mysqli->insert_id . '位用户';
    echo '有' . $mysqli->affected_rows . '记录被影响';
    // affected_rows 属性值有三种
    // 1.受影响记录条数
    // 2.-1代表SQL语句有问题
    // 3.0代表没有生效
} else {
    // 错误信息
    echo 'ERROR' . $mysqli->errno . ': ' . $mysqli->error;
}
复制代码
// 更新操作
$sql = "UPDATE table_name SET age=age+10";
$res = $mysqli->query($sql);
复制代码
// 删除操作
$sql = "DELETE FROM table_name WHERE age >= 6";
$res = $mysqli->query($sql);
复制代码
// 查询操作
$sql = "SELECT id, username, password FROM table_name";
$mysqli_result = $mysqli->query($sql); // 返回结果集对象,不是查询得到的数据
if($mysqli_result && $mysqli_result->num_rows > 0){
    $row = $mysqli_result->fecth_all(); // 获取结果集中所有记录 默认返回二维数组
    $row = $mysqli_result->fetch_all(MYSQLI_NUM); // 索引 + 索引
    $row = $mysqli_result->fetch_all(MYSQLI_ASSOC); // 索引 + 关联
    $row = $mysqli_result->fetch_all(MYSQLI_BOTH); // 索引 + 索引关联
    
    $row = $mysqli_result->fetch_row(); // 获取一行数据 作索引数组返回
    $row = $mysqli_result->fetch_assoc(); // 获取一行数据 作关联数组返回
    $row = $mysqli_result->fetch_array(); // 获取一行数据 默认返回二者都有
    $row = $mysqli_result->fetch_object(); // 获取一行数据 返回对象
    
    $mysqli_result->data_seek(0); // 移动结果集内部的指针 0代表移到第一条
} else {
    // 错误信息
}
复制代码
// 释放结果集
$mysqli_result->free();
$mysqli_result->free_result;
$mysqli_result->close; // 它和关闭连接不一样 关闭连接时$mysqli方法 这个是$mysqli_result的属性
复制代码

多条SQL语句执行

$sql = "INSERT table_name(username, password) VALUES('wangjiaqun', '123')";
$sql .= "UPDATE table_name SET age = 100 WHERE id = 28";
$mysqli->multi_query($sql); // 只有SQL语句成功时才会往下执行 哪里失败哪里停止

// 上面是增删改相关 如果都是查询 如下
// use_result() / store_result() 获取第一条产生的结果集
// more_results() 检测是否有更多的结果集
// next_result() 将结果集指针向下移一位
if($mysqli->query($sql){
    do{
        if($mysqli_result = $mysqli->store_result()){
            $row[] = $mysqli_result->fetch_all(MYSQLI_ASSOC);
        }
    } while($mysqli->more_results() && $mysqli->next_result())
} else {
    echo mysqli->error;
}

复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值