入门PHP就来我这(高级)11 ~ MySQL

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享
路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。


1 PHP操作MySQL数据库的方法

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

1.1 安装并连接MySQL服务器

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

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

 接下来使用开源软件连接mysql,我用的是navicat。

 接下来用PHP尝试连接一下MySQL数据库。

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

 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."未连接!";
 }
?>

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

 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()函数释放内存。
*/

如果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;

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."未连接!";
 }
?>

查看数据库数据:

 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."未连接!";
 }
?>

 

数据库中的数据变化:

  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."未连接!";
 }
?>

 

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

  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."未连接!";
 }
?>



 

 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>

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

 

大家如果喜欢技术,并想有个好的交流平台可以关注我的 我的知乎首页,会不定期分享本人觉得比较好的技术类电子书。
另外,自己创建的一个技术qq群,玩转技术群,该群里功能:分享技能,电子书,代码,以及兼职项目等交流,欢迎大家加入一起交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/780393.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用HttpURLConnection复现http响应码405

目录 使用GET方法&#xff0c;访问GET接口&#xff0c;服务端返回405使用GET方法&#xff0c;访问POST接口&#xff0c;服务端返回405使用POST方法&#xff0c;访问GET接口&#xff0c;服务端返回405 使用GET方法&#xff0c;访问GET接口&#xff0c;服务端返回405 发生场景&a…

SSRF靶场通关合集

目录 前言 SSRF总结 1.pikachu 1.1SSRF(curl) 1.1.1http协议 1.1.2 file协议查看本地文件 1.1.3 dict协议扫描内网主机开放端口 1.2 SSRF&#xff08;file_get_content&#xff09; 1.2.1 file读取本地文件 1.2.2 php://filter/读php源代码 2.DoraBox靶场 前言 最近…

C++第一弹 -- C++基础语法上(命名空间 输入输出 缺省参数 函数重载 引用)

目录 前言一. C关键字(C98)二. 命名空间1.命名空间的定义2.命名空间的使用3.其它部分 三. C输入&输出四. 缺省参数1. 缺省参数的概念2.缺省参数的分类 五. 函数重载1.函数重载的概念2. 为什么C支持函数重载, 而C语言不支持重载呢? 六. 引用1.引用的概念2.引用的特性3.常引…

sqlite 数据库 介绍

文章目录 前言一、什么是 SQLite &#xff1f;二、语法三、SQLite 场景四、磁盘文件 前言 下载 目前已经出到了&#xff0c; Version 3.46.0 SQLite&#xff0c;是一款轻型的数据库&#xff0c;是遵守ACID的关系型数据库管理系统&#xff0c;它包含在一个相对小的C库中。它是…

数学建模算法目标规划

在人们的生产实践中&#xff0c;经常会遇到如何利用现有资源来安排生产&#xff0c;以取得最大经济 效益的问题。此类问题构成了运筹学的一个重要分支—数学规划&#xff0c;而线性规划(Linear Programming 简记 LP)则是数学规划的一个重要分支。特别是在计算机能处理成千上万个…

第二届网络、通信与智能计算国际会议(NCIC 2024)

随着科技的飞速发展&#xff0c;网络通信与智能计算领域正迎来前所未有的变革。在这样的背景下&#xff0c;网络、通信与智能计算国际会议&#xff08;NCIC 2024&#xff09;将于2024年11月22日至25日在中国北京隆重召开。本次大会汇聚了国际学术界的顶尖专家和行业精英&#x…

目标检测算法简述

招聘信息共享社群https://bbs.csdn.net/forums/f6512aad40c7444c8252754ce2dbb427 目标检测算法是一种计算机视觉技术&#xff0c;用于识别图像或视频中的特定对象&#xff0c;并确定这些对象在场景中的精确位置。这些算法通常结合了分类和定位的功能&#xff0c;能够输出每个…

算法系列--分治排序|归并排序|逆序对的求解

一.基本概念与实现 归并排序(mergeSort)也是基于分治思想的一种排序方式,思路如下: 分解:根据中间下标mid将数组分解为两部分解决:不断执行上述分解过程,当分解到只有一个元素时,停止分解,此时就是有序的合并:合并两个有序的子区间,所有子区间合并的结果就是原问题的解 归并…

ESP32 蓝牙网关实践:BLE 设备数据采集与 MQTT 云平台发布(附代码示例)

摘要: 本文详细介绍了如何使用 ESP32 构建强大的蓝牙网关&#xff0c;实现蓝牙设备与 Wi-Fi/互联网之间的无缝连接和数据桥接。文章涵盖了连接和桥接功能、数据处理和分析能力&#xff0c;并提供了详细的代码示例和 Mermaid 生成的图表&#xff0c;助您轻松构建自己的蓝牙网关解…

SCI一区TOP|准随机分形搜索算法(QRFS)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;LA Beltran受到分形几何、低差异序列启发&#xff0c;提出了准随机分形搜索算法&#xff08;Quasi-random Fractal Search, QRFS&#xff09;。 2.算法原理 2.1算法思…

【Python】搭建属于自己 AI 机器人

目录 前言 1 准备工作 1.1 环境搭建 1.2 获取 API KEY 2 写代码 2.1 引用库 2.2 创建用户 2.3 创建对话 2.4 输出内容 2.5 调试 2.6 全部代码 2.7 简短的总结 3 优化代码 3.1 规范代码 3.1.1 引用库 3.1.2 创建提示词 3.1.3 创建模型 3.1.4 规范输出&#xf…

SQL面试题-留存率计算

表定义&#xff1a; create table if not exists liuliang_detail (user_id string comment ,record_time string comment yyyymmdd hh:mi:ss ) comment 流量明细表 ; 方法一&#xff1a; 计算的是整段时间范围内&#xff0c;每一天为基准的所有的留存1、2、7天的用户数。 …

cs231n作业2 双层神经网络

双层神经网络 我们选用ReLU函数和softmax函数&#xff1a; 步骤&#xff1a; 1、LOSS损失函数&#xff08;前向传播&#xff09;与梯度&#xff08;后向传播&#xff09;计算 Forward: 计算score&#xff0c;再根据score计算loss Backward&#xff1a;分别对W2、b2、W1、b1求…

使用Charles mock服务端响应数据

背景 服务端未提供接口/服务端接口返回结果有逻辑限制&#xff08;次数限制&#xff09;&#xff0c;不能通过原始接口返回多次模拟预期的返回结果&#xff0c;例如边界值情况 客户端受到接口响应数据的限制&#xff0c;无法继续开发或测试&#xff0c;会极大影响开发测试效率…

Unity入门之重要组件和API(3) : Transform

前言 Transform类主要处理游戏对象(GameObject)的位移、旋转、缩放、父子关系和坐标转换。 1.位置和位移 1.1必备知识点&#xff1a;Vector3 Vector3 主要用来表示三维坐标系中的一个点或者一个向量。 【声明】 Vector3 v1 new Vector3(); Vector3 v2 new Vector3(10, 10…

谷粒商城----通过缓存和分布式锁获取数据。

高并发下缓存失效的问题 高并发下缓存失效的问题--缓存穿透 指查询一个一定不存在的数据&#xff0c;由于缓存是不命中&#xff0c;将去查询数据库&#xff0c;但是数据库也无此记录&#xff0c;我们没有将这次查询的不写入缓存&#xff0c;这将导致这个不存在的数据每次请求…

详解「一本通 5.1 练习 1」括号配对(区间DP经典题)

一.题目 二.思路 题目的大意是说:给你一个只由[ ] ( )构成的字符串&#xff0c;请问需要增加多少个字符才能使其变为一个合法的括号序列。 因为添加若干字符使其达到匹配的目的等价于将不匹配的字符去除使得字符串达到匹配的目的 所以这题只需计算出已匹配完成的括号数,再…

深度学习与CV入门

文章目录 前言历史 前言 历史 tensorflow可以安装Tensorboard第三方库用于展示效果 TensorFlow工作流程&#xff1a;p6-4:20 使用tf.data加载数据。使用tf.data实例化读取训练数据和测试数据模型的建立与调试:使用动态图模式Eager Execution和著名的神经网络高层API框架Ker…

mongoDB教程(五):命名规范

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

拍桌子、甩脸子、抡棒子没用,带出一流战斗力团队用好3招就够了

拍桌子、甩脸子、抡棒子没用&#xff0c;带出一流战斗力团队用好3招就够了 第一招&#xff1a;及时激励 在现实中&#xff0c;绝大部分管理者管理手段缺乏&#xff0c;只知道用钱进行激励。 而真正的高手不仅会满足员工物质上的需求&#xff0c;更注重员工心理上的满足。 他…