码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • PHP与mysql数据库交互


    PHP与mysql数据库交互

    文章目录

    • PHP与mysql数据库交互
        • 方法速查
        • 建立与Mysql链接
        • 捕获连接错误
        • SQL语句的执行
        • SQL 错误
        • SQL语句执行
        • 结果集对象
          • 方法速查
      • 案例

    方法速查

    函数名								 		作用
    mysqli_connect()				与MySQL 数据库建立连接。
    mysqli_close()					关闭与MYSQL 数据库建立的连接。
    mysqli_connect_errno()			与MySQL 数据库建立连接时,发生错误时的错误编号。
    mysqli_connect_error()			与MySQL 数据库建立连接时,发生错误时的错误信息。
    mysqli_query()					执行SQL 语句
    mysqli_errno()					执行SQL 语句时,发生错误的编号。
    mysqli_error()					执行SQL 语句时,发生错误的信息。
    mysqli_fetch_assoc()			从结果集对象中取数据,按条取数据。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    建立与Mysql链接

    想要建立连接想要用到一个PHP函数mysqli_connect( d b h o s t , db_host, dbh​ost,db_user, d b p a s s , db_pass, dbp​ass,db_name);

    里面有四个参数

    $db_host
    主机的名称
    
    • 1
    • 2
    $db_user
    连接数据库的用户名
    
    • 1
    • 2
    $db_pass
    连接数据库用户名的密码
    
    • 1
    • 2
    $db_name
    连接的库名
    
    • 1
    • 2
    $db_host='localhost';
    $db_user='root';
    $db_pass='root';
    $db_name='xl_bbs';
    $link= @mysqli_connect($db_host, $db_user, $db_pass, $db_name);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    $link变量就相当于获取到了一个通行证

    捕获连接错误

    如果说建立连接失败就会停止执行所有语句,并输出错误和错误编号

    if(!$link){
        exit("[".mysqli_connect_errno()."] ".mysqli_connect_error());
    }
    
    • 1
    • 2
    • 3

    SQL语句的执行

    要执行sql语句时需要用到mysqli_query()方法

    $sql = "select * from users"
    $results = mysqli_($link,$sql);
    
    • 1
    • 2

    如果执行正常就会返回object类型数据否则,就是bool(false)。

    SQL 错误

    如果在执行SQL 语句的时候发生错误,mysqli_query 将返回false。可以使用以下函数捕获错误原因:

    if(!$results){
        exit("[".mysqli_errno($link)."] ".mysqli_error($link));
    }
    
    • 1
    • 2
    • 3

    SQL语句执行

    需要用到mysqli_fetch_assoc()方法

    导出第一条语句

    var_dump($result);
    
    • 1

    所有语句全部导出

    while($result = mysqli_fetch_assoc($results)){
        var_dump($result);
    }
    
    • 1
    • 2
    • 3

    如果说导入第二条语句的话需要执行两遍var_dump($result);但是第一条结果会被覆盖只显示第二条语句

    结果集对象

    方法速查
    函数														说明
    mysqli_fetch_row()							以索引数组的方式获取一条记录的数据
    mysqli_fetch_assoc()						以关联数组的方式获取一条记录的数据
    mysqli_fetch_array()						以索引数组或关联数组的方式获取一条记录的数据
    mysqli_fetch_all()							以索引数组或关联数组的方式获取全部记录的数据
    mysqli_num_rows()							获取结果集对象中数据条数
    mysqli_free_result()						释放与一个结果集合相关的内存
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    案例

    利用之前做好的数据库来实现网页显示成果为下图
    在这里插入图片描述

    新建一个数据库把之前数据库实验的备份文件进行导入依次输入以下命令

    create database bbs;
    use bbs;
    source C:/bbs.sql;
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    准备好数据库后用php代码创建连接

    
        $db_host="127.0.0.1";
        $db_user= "root";
        $db_pass= "rooe";
        $db_name= "bbs";
        $link=@mysqli_connect("$db_host","$db_user","$db_pass","$db_name");
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    做一个 捕获错误连接不上数据库时进行简单报错

     if(!$link){
            exit("数据库连接错误"."【".mysqli_connect_errno()."】".mysqli_connect_error());
    }
    
    • 1
    • 2
    • 3

    写入查询sql语句并用mysqli_query()方法执行sql语句

    
     $sql="select * from message";
        $results=mysqli_query($link,$sql);
    
    • 1
    • 2
    • 3

    想要去每条数据使用while循环用mysqlo_fetch_assoc()方法进行取值进行输出条件为mysqlo_fetch_assoc()把全部值取完
    再加入表格元素那么就成功了

    echo " ";while($result=mysqli_fetch_assoc($results)){echo"";foreach($resultas$key=>$value){echo"";}echo"";}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    最后再关闭链接

    mysqli_close($link);
    
    • 1

    在这里插入图片描述
    优化后可以通过id查找数据库内容的源码如下

    <pre>
        <meta charset="utf-8">
    <?php
        $db_host="127.0.0.1";
        $db_user= "root";
        $db_pass= "root";
        $db_name= "bbs";
        $link=@mysqli_connect("$db_host","$db_user","$db_pass","$db_name");
        if(!$link){
            exit("数据库连接错误"."【".mysqli_connect_errno()."】".mysqli_connect_error());
            }
    $id=isset($_REQUEST["id"])?$_REQUEST['id']:1;
        $sql="select m.id, u.username, m.title,m.content from message m,user u where m.uid= u.id and m.id={$id};";
        $results=mysqli_query($link,$sql);
        if(!$results){
            exit("数据库错误".mysql_errno().mysql_error());
        }
        echo "
    IDUIDTITLECONTENT
    "; echo $value; echo "
    "; while($result=mysqli_fetch_assoc($results)) { echo ""; foreach($result as $key=>$value){ echo ""; } echo ""; } mysqli_close($link); ?>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    在这里插入图片描述

  • 相关阅读:
    vue指令(代码部分)
    5个免费样机素材网站,设计必备,赶紧马住!
    PRBP20P-10/250C-EB、PRDP6G-10/30-CB电液比例直动式先导减压阀放大板
    【Spark】spark中的thread.sleep
    【项目】基于TCP的聊天系统
    分布式事务-CAP&Raft原理
    国际物流和跨境电商物流的区别
    MySQL主/从-主/主集群安装部署
    哪些企业可以做知识产权质押?
    互补格雷码+相移码求解三维点云
  • 原文地址:https://blog.csdn.net/weixin_70137901/article/details/134017746
    • 最新文章
    • 攻防演习之三天拿下官网站群
      数据安全治理学习——前期安全规划和安全管理体系建设
      企业安全 | 企业内一次钓鱼演练准备过程
      内网渗透测试 | Kerberos协议及其部分攻击手法
      0day的产生 | 不懂代码的"代码审计"
      安装scrcpy-client模块av模块异常,环境问题解决方案
      leetcode hot100【LeetCode 279. 完全平方数】java实现
      OpenWrt下安装Mosquitto
      AnatoMask论文汇总
      【AI日记】24.11.01 LangChain、openai api和github copilot
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
    正则表达式工具 cron表达式工具 密码生成工具

    京公网安备 11010502049817号

    IDUIDTITLECONTENT
    "; echo $value; echo "