12 PHP配置数据库MySQL

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享

路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。

image.gif 编辑


1 PHP操作MySQL数据库的方法

PHP操作数据库现在用的多的是mysqli拓展库,mysqli扩展库和mysql扩展库的应用类似,而且大部分函数的使用方法都一样,唯一的区别就是mysqli扩展库中的函数名称都是以mysqli开头的。

1.1 安装并连接MySQL服务器

首先要在本地安装了MySQL数据库,你可以直接进入MySQL官方地址去下载。

image.gif 编辑

找到这个地方下载即可,下载傻瓜式安装即可。

image.gif 编辑 接下来使用开源软件连接mysql,我用的是navicat。

image.gif 编辑

image.gif 编辑 接下来用PHP尝试连接一下MySQL数据库。

<?php
 //mysqli_connect 函数实现与MySQL数据库的连接。
 $link = mysqli_connect('localhost','root','passwd');
 if($link) {
  echo "连接MySQL数据库成功!";
 } else{
  echo "未连接!";
 }
?>

image.gif

image.gif 编辑

1.2 选择MySQL数据库连接

首先我们安装好MySQL后,在MySQL服务器里会有一个默认的world数据库,我们利用它来做测试。连接数据库有两种方式,一种是直接mysqli_connect()函数里配置一个数据库名,另一种是利用msqli_select_db()函数选择数据库。

第一种:(返回布尔型结果)
<?php
 $dbName = 'world';
 $link = mysqli_connect('localhost','root','passwd',$dbName);
 if($link) {
  echo "连接".$dbName."数据库成功!";
 } else{
  echo $dbName."未连接!";
 }
?>

image.gif

image.gif 编辑

第二种:(返回布尔型结果)
<?php
 $dbName = 'world';
 $link = mysqli_connect('localhost','root','passwd');
 
 if(mysqli_select_db($link,$dbName)) {
  echo "连接".$dbName."数据库成功!";
 } else{
  echo $dbName."未连接!";
 }
?>

image.gif

image.gif

1.3 执行SQL语句

执行sql语句的函数是mysqli_query(),其语法如下:

mixed mysqli_query(mysqli $link, string $query [, int $resultmode])
/**
 参数介绍:
   $link 必选参数,mysqli_connect()函数连接Mysql数据库服务器成功后的连接标识。
   $query必选参数,sql语句。
   $resultMode,可选参数,默认值为MYSQL_STORE_RESULT。如果返回大量数据可以应用 MYSQL_USE_RESULT,但应用该值时,以后的查询可能会返回一个commands out of sync错误,解决办法是应用mysqli_free_result()函数释放内存。
*/

image.gif

如果SQL语句是查询指令select,成功则返回查询结果集,否则返回false;如果SQL语句是insert、delete、update等操作指令,成功返回true,否则返回false。

在db_test数据库里创建一个表books,sql语句如下:

DROP TABLE IF EXISTS   `books`;
CREATE TABLE `books`(
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `category` varchar(50) NOT NULL,
  `price` decimal(10,2) DEFAULT NULL,
`publish_time` date DEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

image.gif

image.gif 编辑

1.3.1 执行插入语句:
<?php
 $dbName = 'db_test';
 $link = mysqli_connect('localhost','root','passwd');
 if(mysqli_select_db($link,$dbName)) {
    echo "连接".$dbName."数据库成功!<br>";
    
    $result = mysqli_query($link,"insert into books values('1','php基础','跟着路老师学习PHP高级','10.0','2024-07-07')");
    
    if($result){
      echo "插入成功!";
    } else {
      echo "插入失败!";
    }
  
 } else{
  echo $dbName."未连接!";
 }
?>

image.gif

image.gif 编辑

查看数据库数据:

image.gif 编辑 1.3.2 执行更新操作
<?php
 $dbName = 'db_test';
 $link = mysqli_connect('localhost','root','passwd');
 if(mysqli_select_db($link,$dbName)) {
    echo "连接".$dbName."数据库成功!<br>";
    
    $result = mysqli_query($link,"update  books set name='java开发',price='33.00' where id='2'");
    
    if($result){
      echo "更新成功!";
    } else {
      echo "更新失败!";
    }
  
 } else{
  echo $dbName."未连接!";
 }
?>

image.gif

image.gif 编辑

数据库中的数据变化:

image.gif 编辑  1.3.3 执行删除操作
<?php
 $dbName = 'db_test';
 $link = mysqli_connect('localhost','root','passwd');
 if(mysqli_select_db($link,$dbName)) {
    echo "连接".$dbName."数据库成功!<br>";
    
    $result = mysqli_query($link,"delete from books where name='3php基础3'");
    
    if($result){
      echo "删除成功!";
    } else {
      echo "删除失败!";
    }
  
 } else{
  echo $dbName."未连接!";
 }
?>

image.gif

image.gif 编辑

数据库中数据变换:(第三条数据已经被删除)

image.gif 编辑

 1.3.4 执行查询操作
<?php
 $dbName = 'db_test';
 $link = mysqli_connect('localhost','root','passwd');
 if(mysqli_select_db($link,$dbName)) {
    echo "连接".$dbName."数据库成功!<br>";
    
    $result = mysqli_query($link,"select * from books");
    
    // 检查结果
    if ($result->num_rows > 0) {
      // 输出每行数据
      while($row = $result->fetch_assoc()) {
          echo $row["id"]. "--" . $row["name"]. "--" . $row["category"]. "--" . $row["price"]."--". $row["publish_time"]."<br>";
      }
    } else {
      echo "0 结果";
    }
  
 } else{
  echo $dbName."未连接!";
 }
?>

image.gif

image.gif 编辑

1.4 将结果集返回到数组

使用mysqli_query()函数执行select语句返回结果集合的遍历是稍微复杂一些,结果集展示的函数除了1.3.4中的fetch_assoc()以外还有一个mysqli_fetch_array()函数,它将结果集返回到数组中。

创建lists.html文件,并在里面实现php内嵌语句。

<div class="container">
        <div class="col-sm-offset-2 col-sm-8">
            <div class="panel panel-default">
                <div class="panel-heading">
                    图书列表
                </div>
                <div class="panel-body">
                    <table class="table table-striped task-table">
                        <thead>
                            <tr>
                                <th>ID</th>
                                <th>图书名称</th>
                                <th>分类</th>
                                <th>价格</th>
                                <th>出版日期</th>
                                <th>操作</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php while($rows = mysqli_fetch_array($result,MYSQLI_ASSOC)){ ?>
                                <tr>
                                    <td class="table-text">
                                        <?php echo $rows['id'] ?>
                                    </td>
                                    <td class="table-text">
                                        <?php echo $rows['name'] ?>
                                    </td>
                                    <td class="table-text">
                                        <?php echo $rows['category'] ?>
                                    </td>
                                    <td class="table-text">
                                        <?php echo $rows['price'] ?>
                                    </td>
                                    <td class="table-text">
                                        <?php echo $rows['publish_time'] ?>
                                    </td>
                                    <td>
                                        <a href="editBook.php?id=<?php echo $rows['id'] ?>">
                                            <button class="btn btn-info edit">编辑</button>
                                        </a>
                                        <a href="deleteBook.php?id=<?php echo $rows['id'] ?>">
                                            <button class="btn btn-danger delete">删除</button>
                                        </a>
                                        
                                    </td>
                                </tr>
                            <?php } ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>

image.gif

image.gif 编辑

下篇 PHP 从结果集合中获取对象、枚举数组、记录数、释放内存、关闭连接

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
13天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
13天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
42 3
|
13天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE &#39;log_%&#39;;`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
54 2
|
26天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
182 15
|
20天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
27天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
1月前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####
|
30天前
|
SQL 关系型数据库 MySQL
PHP与MySQL的高效交互:从基础到实践####
本文深入探讨了PHP与MySQL数据库之间的高效交互技术,涵盖了从基础连接到高级查询优化的全过程。不同于传统的摘要概述,这里我们直接以一段精简代码示例作为引子,展示如何在PHP中实现与MySQL的快速连接与简单查询,随后文章将围绕这一核心,逐步展开详细讲解,旨在为读者提供一个从入门到精通的实战指南。 ```php <?php // 数据库配置信息 $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "test_db"; // 创建连接 $conn = new mysqli($se
29 0
|
2月前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据

相关产品

  • 云数据库 RDS MySQL 版