PHP 原生操作 Mysql

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 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);
?>

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
2月前
|
关系型数据库 MySQL PHP
PHP和Mysql前后端交互效果实现
本文介绍了使用PHP连接MySQL数据库的基本函数及其实现案例。内容涵盖数据库连接、选择数据库、执行查询、获取结果等常用操作,并通过用户登录和修改密码的功能实例,展示了PHP与MySQL的交互过程及代码实现。
238 0
PHP和Mysql前后端交互效果实现
|
8月前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
7月前
|
关系型数据库 MySQL Linux
查看Linux、Apache、MySQL、PHP版本的技巧
以上就是查看Linux、Apache、MySQL、PHP版本信息的方法。希望这些信息能帮助你更好地理解和使用你的LAMP技术栈。
359 17
|
8月前
|
关系型数据库 MySQL PHP
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
208 18
|
9月前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
372 25
|
12月前
|
前端开发 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
483 0
|
11月前
|
SQL 关系型数据库 MySQL
PHP与MySQL的高效交互:从基础到实践####
本文深入探讨了PHP与MySQL数据库之间的高效交互技术,涵盖了从基础连接到高级查询优化的全过程。不同于传统的摘要概述,这里我们直接以一段精简代码示例作为引子,展示如何在PHP中实现与MySQL的快速连接与简单查询,随后文章将围绕这一核心,逐步展开详细讲解,旨在为读者提供一个从入门到精通的实战指南。 ```php <?php // 数据库配置信息 $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "test_db"; // 创建连接 $conn = new mysqli($se
299 31
|
12月前
|
安全 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
——深入探索LAMP栈下的高效数据交互与处理技巧 ####
|
12月前
|
关系型数据库 MySQL PHP
PHP与MySQL动态网站开发实战指南####
深入探索PHP与MySQL的协同工作机制,本文旨在通过一系列实战案例,揭示构建高效、稳定且用户友好的动态网站的秘诀。从环境搭建到数据交互,再到最佳实践分享,本文为开发者提供了一条清晰的学习路径,助力其在LAMP(Linux, Apache, MySQL, PHP/Perl/Python)栈上实现技术飞跃。 ####
|
11月前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####

推荐镜像

更多