PHP 原生操作 Mysql

  • PHP 原生连接 Mysql

  • 操作数据库

    <?php
    // 主机名
    $db_host = "localhost";
    // 端口号
    $db_port = "3306";
    // 用户名
    $db_user = "root";
    // 密码
    $db_pass = "123456";
    // 数据库名
    $db_name = "test";
    // 字符集
    $db_charset = "utf8";
    
    // 1、连接 Mysql 服务器,如果连接成功返回 Mysqli 连接对象,如果失败,则返回 false
    if (!$link = @mysqli_connect($db_host.":".$db_port, $db_user, $db_pass)) {
      echo "<h2>PHP连接Mysql服务器失败!</h2>";
      // 输出错误信息
      echo "系统错误信息:".mysqli_connect_error();
      // 终止程序 exit() 或 die()
      die();
    }
    echo "<h2>PHP连接Mysql服务器成功!</h2>";
    
    // 2、选择数据库,成功返回 true, 失败返回 false
    if (!mysqli_select_db($link, $db_name)) {
      echo "<h2>选择{$db_name}失败</h2>";
      // 终止程序 exit() 或 die()
      die();
    }
    echo "<h2>选择{$db_name}成功</h2>";
    
    // 3、设置字符集,成功返回 true, 失败返回 false,一般都是成功,没必要判断
    mysqli_set_charset($link, $db_charset);
    
    // 4、执行 sql 语句,增删改查
    $sql = "select * from user";
    // 说明: mysqli_query() 仅对 select、show、describe 语句返回一个 mysqli result 结果集对象,如果查询执行不正确则返回 false。对于其它类型的SQL语句,mysqli_query() 在执行成功时返回 true, 出错时返回 false。非 false 的返回值意味着查询是合法的并能够被服务器执行。
    // 注意: 查询字符串不应以分号结束,和命令行模式下有区别。
    $result = mysqli_query($link, $sql);
    // 输出这种结果集,但是想要获得数据需要用别的方式: object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(3) ["lengths"]=> NULL ["num_rows"]=> int(4) ["type"]=> int(0) }
    var_dump($result);
    
        // 1)、mysqli_fetch_row 从结果集中获取一行数据,并作为枚举数组返回,如果没有更多行则返回 false 。
        $arr = mysqli_fetch_row($result);
        print_r($arr); // Array ( [0] => 1 [1] => name1 [2] => 18 )
        // 再次调用它会自己判断获取下一行数据
        $arr = mysqli_fetch_row($result);
        print_r($arr); // Array ( [0] => 2 [1] => name2 [2] => 15 )
        // 可以直接 while 取出所有数据
        while($arr = mysqli_fetch_row($result)) {
          print_r($arr);
        }
    
    
        // 2)、(常用方式) mysqli_fetch_assoc 从结果集中获取一行数据,并作为关联数组返回,如果没有更多行则返回 false 。
        $arr = mysqli_fetch_assoc($result);
        print_r($arr); // Array ( [id] => 1 [name] => name1 [age] => 18 )
        // 再次调用它会自己判断获取下一行数据
        $arr = mysqli_fetch_assoc($result);
        print_r($arr); // Array ( [id] => 2 [name] => name2 [age] => 15 )
        // 可以直接 while 取出所有数据
        while($arr = mysqli_fetch_assoc($result)) {
          print_r($arr);
        }
    
        // 3)、mysqli_fetch_array 上面 1 跟 2 的结合体,根据传入不同 $result_type 值获取得到枚举数组或关联数组,如果没有更多行则返回 false 。
        // $result_type: MYSQLI_BOTH(两者兼有,默认)、MYSQLI_ASSOC(关联索引)、MYSQLI_NUM(数字索引)
        $arr = mysqli_fetch_array($result);
        print_r($arr); // Array ( [0] => 1 [id] => 1 [1] => name1 [name] => name1 [2] => 18 [age] => 18 )
        $arr = mysqli_fetch_array($result, MYSQLI_ASSOC);
        print_r($arr); // Array ( [id] => 2 [name] => name2 [age] => 15 ) 
        $arr = mysqli_fetch_array($result, MYSQLI_NUM);
        print_r($arr); // Array ( [0] => 3 [1] => name3 [2] => 20 )
    
        // 4)、mysqli_fetch_all 上面 3 的升级版,从结果集中获取所有行数据作为关联数组、枚举数组、或二者兼有。
        // $result_type: MYSQLI_ASSOC(关联索引)、MYSQLI_NUM(数字索引,默认)
        $arrs = mysqli_fetch_all($result);
        print_r($arrs); // Array ( [0] => Array ( [0] => 1 [1] => name1 [2] => 18 ) [1] => Array ( [0] => 2 [1] => name2 [2] => 15 ) )
        $arrs = mysqli_fetch_all($result, MYSQLI_ASSOC);
        print_r($arrs); // Array ( [0] => Array ( [id] => 1 [name] => name1 [age] => 18 ) [1] => Array ( [id] => 2 [name] => name2 [age] => 15 ) )
    
        // 4)、mysqli_num_rows 获取结果集中行数量,此命令仅对 select 命令语句有效。
        $count = mysqli_num_rows($result);
        print_r($count); // 2
    
        // 5)、mysqli_affected_rows 取得前一次 Mysql 操作所影响的记录行数。
        // 说明: 取得最近一次与 $link 关联的 select、insert、update、delete 操作所影响的记录行数。
        // 注意: 如果最近一次查询失败,函数返回-1,当使用 update 查询,Mysql 不会将原值和新值一样的值更新,返回值不一定就是查询条件所符合的记录,只有修改过的记录数才会被返回。
        $count = mysqli_affected_rows($link);
        print_r($count); // 2
    
    // 5、手动销毁结果集变量,方便服务器资源循环利用,注意:如果结果集是 Bool 类型是不能进行销毁的,必须为 mysqli result 结果集对象才可以进行销毁,这里可以做下判断
    // mysqli_free_result($result);
    
    // 6、如果使用完毕之后,需要关闭数据库连接,以免占用资源
    mysqli_close($link);
    ?>
    
  • PHP 原生操作 Mysql 增删改查案例

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡尔特斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值