PHP 原生操作 Mysql

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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);
?>

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
132 25
|
3月前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####
|
3月前
|
关系型数据库 MySQL PHP
php实现一个简单的MySQL分页
通过本文的详细步骤和代码示例,我们实现了一个简单的PHP MySQL分页功能。主要步骤包括计算总记录数、设置分页参数、查询当前页的数据以及生成分页链接。这种分页方式适用于大多数Web应用,能够有效提升用户体验和页面响应速度。
91 4
|
3月前
|
SQL 关系型数据库 MySQL
PHP与MySQL的高效交互:从基础到实践####
本文深入探讨了PHP与MySQL数据库之间的高效交互技术,涵盖了从基础连接到高级查询优化的全过程。不同于传统的摘要概述,这里我们直接以一段精简代码示例作为引子,展示如何在PHP中实现与MySQL的快速连接与简单查询,随后文章将围绕这一核心,逐步展开详细讲解,旨在为读者提供一个从入门到精通的实战指南。 ```php <?php // 数据库配置信息 $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "test_db"; // 创建连接 $conn = new mysqli($se
106 0
|
4月前
|
关系型数据库 MySQL PHP
PHP与MySQL的深度整合:构建高效动态网站####
在当今这个数据驱动的时代,掌握如何高效地从数据库中检索和操作数据是至关重要的。本文将深入探讨PHP与MySQL的深度整合方法,揭示它们如何协同工作以优化数据处理流程,提升网站性能和用户体验。我们将通过实例分析、技巧分享和最佳实践指导,帮助你构建出既高效又可靠的动态网站。无论你是初学者还是有经验的开发者,都能从中获得宝贵的见解和实用的技能。 ####
51 0
|
关系型数据库 MySQL 数据库连接
PHP 原生连接 Mysql
PHP 原生连接 Mysql
179 0
|
10月前
|
关系型数据库 MySQL PHP
【PHP 开发专栏】PHP 连接 MySQL 数据库的方法
【4月更文挑战第30天】本文介绍了 PHP 连接 MySQL 的两种主要方法:mysqli 和 PDO 扩展,包括连接、查询和处理结果的基本步骤。还讨论了连接参数设置、常见问题及解决方法,如连接失败、权限和字符集问题。此外,提到了高级技巧如使用连接池和缓存连接信息以优化性能。最后,通过实际案例分析了在用户登录系统和数据管理中的应用。
642 1
|
存储 SQL 前端开发
【PHP】一文详解如何连接Mysql数据库(附源码)
本文主要讲解PHP如何连接数据库并且根据前端的form表单提交的数据返回到数据库最后查询出来展现
387 0
【PHP】一文详解如何连接Mysql数据库(附源码)
|
SQL 网络协议 关系型数据库
PHP为什么可以连接MySQL?底层原理是什么?
PHP为什么可以连接MySQL?底层原理是什么?
436 0
|
PHP
记录一次php连接mysql8.0失败
记录一次php连接mysql8.0失败
198 0