PHP与mysql数据库交互

PHP与mysql数据库交互

文章目录

方法速查

php 复制代码
函数名								 		作用
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()			从结果集对象中取数据,按条取数据。

建立与Mysql链接

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

里面有四个参数

php 复制代码
$db_host
主机的名称
php 复制代码
$db_user
连接数据库的用户名
php 复制代码
$db_pass
连接数据库用户名的密码
php 复制代码
$db_name
连接的库名
php 复制代码
$db_host='localhost';
$db_user='root';
$db_pass='root';
$db_name='xl_bbs';
$link= @mysqli_connect($db_host, $db_user, $db_pass, $db_name);

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

捕获连接错误

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

php 复制代码
if(!$link){
    exit("[".mysqli_connect_errno()."] ".mysqli_connect_error());
}

SQL语句的执行

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

php 复制代码
$sql = "select * from users"
$results = mysqli_($link,$sql);

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

SQL 错误

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

php 复制代码
if(!$results){
    exit("[".mysqli_errno($link)."] ".mysqli_error($link));
}

SQL语句执行

需要用到mysqli_fetch_assoc()方法

导出第一条语句

php 复制代码
var_dump($result);

所有语句全部导出

php 复制代码
while($result = mysqli_fetch_assoc($results)){
    var_dump($result);
}

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

结果集对象

方法速查
php 复制代码
函数														说明
mysqli_fetch_row()							以索引数组的方式获取一条记录的数据
mysqli_fetch_assoc()						以关联数组的方式获取一条记录的数据
mysqli_fetch_array()						以索引数组或关联数组的方式获取一条记录的数据
mysqli_fetch_all()							以索引数组或关联数组的方式获取全部记录的数据
mysqli_num_rows()							获取结果集对象中数据条数
mysqli_free_result()						释放与一个结果集合相关的内存

案例

利用之前做好的数据库来实现网页显示成果为下图

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

sql 复制代码
create database bbs;
use bbs;
source C:/bbs.sql;

准备好数据库后用php代码创建连接

php 复制代码
<?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");
?>

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

php 复制代码
 if(!$link){
        exit("数据库连接错误"."【".mysqli_connect_errno()."】".mysqli_connect_error());
}

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

php 复制代码
 $sql="select * from message";
    $results=mysqli_query($link,$sql);

想要去每条数据使用while循环用mysqlo_fetch_assoc()方法进行取值进行输出条件为mysqlo_fetch_assoc()把全部值取完

再加入表格元素那么就成功了

php 复制代码
echo "<table border='2'> <tr><td>ID</td><td>UID</td><td>TITLE</td><td>CONTENT</td></tr> ";
    while($result=mysqli_fetch_assoc($results))
    {   echo "<tr>";
        foreach($result as $key=>$value){ 
            echo "<td>";
            echo $value;
            echo "</td>";
        
        }
        echo "</tr>";
    }

最后再关闭链接

php 复制代码
mysqli_close($link);

优化后可以通过id查找数据库内容的源码如下

php 复制代码
<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 "<table border='2'> <tr><td>ID</td><td>UID</td><td>TITLE</td><td>CONTENT</td></tr> ";
    while($result=mysqli_fetch_assoc($results))
    {   echo "<tr>";
        foreach($result as $key=>$value){ 
            echo "<td>";
            echo $value;
            echo "</td>";
        
        }
        echo "</tr>";
    }
mysqli_close($link);
?>
相关推荐
xixiaoyunya1 小时前
从零搭建跨域互联网络:个人与小团队的轻量组网方案技术解析
开发语言·智能路由器·php
隔窗听雨眠1 小时前
MySQL索引机制深度解析:从B+树原理到高并发查询优化的完整指南
数据库·b树·mysql
我的xiaodoujiao2 小时前
使用PyMySQL模块技术操作MySQL数据库
数据库·python·测试工具·mysql
灯澜忆梦12 小时前
【MySQL17】进阶篇 | InnoDB引擎
数据库·mysql
吴声子夜歌13 小时前
网络安全——网络渗透测试(网络扫描)
网络·web安全·php
布莱克60514 小时前
理解数据库聚簇索引:原理、优势与适用场景
数据库·mysql
这个DBA有点耶16 小时前
MySQL迁移实战:从mysqldump到专业工具的完整选型指南
数据库·mysql·dba
01_ice18 小时前
MySQL内外连接
数据库·mysql
吴声子夜歌19 小时前
网络安全——网络渗透测试(密码破译)
网络·web安全·php
两个人的幸福online19 小时前
PHP 实现国密 SM3 踩坑记录:HMAC-SM3 签名对接 CNR 接口
开发语言·php