批改状态:合格
老师批语:
| 序号 | 顺序 | 描述 |
|---|---|---|
| 1 | 连接数据库 | 连接数据库可以通过MYSQLI与PDO两种对象进行连接 |
| 2 | 操作数据库 | 连接完成后对数据库INSERT、DELECT、UPDATE、SELECT(增删改查) |
| 3 | 释放结果集 | 对数据库操作完成后释放结果集:MYSQLI使用free() |
| 4 | 关闭数据库 | 操作完成关闭数据库CLOSE()、PDO使用NULL |
1.config.php文件说明
| 序号 | 名称 | 描述 |
|---|---|---|
| 1 | type | 连接的数据库类型 |
| 2 | dbname | 连接数据名称 |
| 3 | host | 连接数据库地址 |
| 4 | username | 连接数据库用户名 |
| 5 | password | 连接数据库密码 |
| 6 | port | 连接数据库端口号 |
| 7 | charset | 连接数据库字符集 |
示例
<?php// 连接数据库参数return['type' => $type ?? 'mysql', //数据库类型'host' => $host ?? 'localhost',//数据库连接地址'charset'=>$type ?? 'utf8', //数据库字符集'dbname' =>$type ?? 'mysqli', //数据库名称'username' => $type ?? 'root', //连接数据库用户名'password' => $type ?? '142536',//连接数据库密码'port' => $type ?? '3306' //数据库端口号];
2.connect.php文件说明
<?php$config = require __DIR__ ."/../config.php"; //设定一个变量接收config.php的数据库连接参数extract($config); // 关联数组转换独立变量$mysqli = new mysqli($host,$username,$password,$dbname,$port);//连接数据库需要://数据库地址$host 连接地址必须在首位//数据库用户名和密码:$usrname,$password//数据库名:$dbname//数据库端口号:$port(可选)if($mysqli->connect_errno) echo '连接错误:'.$mysqli->connect_error;//数据库连接错误,显示错误信息$mysqli->set_charset("utf-8");
<?php$config = require __DIR__ .'/../config.php';extract($config);//$dsn ='mysql:host=localhost;dbname=mysqli;charset=utf8;port=3306';//处理连接错误try{ $dsn=sprintf('%s:host=%s;dbname=%s;charset=%s;port=%s',$type,$host,$dbname,$charset,$port);$pdo = new PDO($dsn,$username,$password);$pdo->setAttribute(PDO::FETCH_ASSOC,PDO::ATTR_DEFAULT_FETCH_MODE);//设置pdo属性PDO::FETCH_ASSOC结果集列名的数组,//PDO::ATTR_DEFAULT_FETCH_MODE设置默认的提取模式}catCh(PDOException $e){exit("连接错误:".$e->getMessage());//$e->getMessage()获取错误信息}
常用的接口与属性方法。
| 序号 | 属性/方法 | 描述 |
|---|---|---|
| 1 | connect_error | 连接错误信息 |
| 2 | connect_erron | 连接错误编码 |
| 3 | set_charset | 设置字符集 |
| 4 | prepare | 创建’mysqli->stmt’对象 |
| 序号 | 属性/方法 | 描述 |
|---|---|---|
| 1 | bind_param() | 占位符与变量绑定 |
| 2 | bind_result() | 字段与变量绑定 |
| 3 | execute() | 执行SQL语句 |
| 4 | get_result() | 创建’mysqli->rseult’对象 |
| 5 | fetch() | 遍历变量中的字段 |
| 6 | close() | 关闭数据库连接 |
| 7 | affected_row | 受影响记录数量 |
| 8 | insert_id | 受影响主键ID |
| 9 | error | 错误信息 |
| 10 | reeon | 错误编码 |
| 11 | store->result() | 记录集回传 |
| 序号 | 属性/方法 | 描述 |
|---|---|---|
| 1 | fetch_all() | 获取全部记录 |
| 2 | fetch_assoc() | 关联数组获取单条记录 |
| 3 | num_rows() | 结果集记录的数量 |
| 4 | free() | 释放结果集 |
常用的接口与属性方法。
| 序号 | 属性/方法 | 描述 |
|---|---|---|
| 1 | setAttribute() | 设置属性 |
| 2 | lastInsertId() | 最后插入记录的主键 id |
| 3 | prepare() | 创建PDOStatement对象 |
| 序号 | 属性/方法 | 描述 |
|---|---|---|
| 1 | setAttribute() | 设置属性 |
| 2 | lastInsertId() | 最后插入记录的主键 id |
| 3 | prepare() | 创建PDOStatement对象 |
1.mysqli对数据库的添加:
表名 SET 表内容=?..;
<?phprequire "connect.php";$sql ='INSERT `user` SET `username`=?,`password`=?,`sex`=?,`age`=?,`email`=?,`mobile`=?;';$stmt = $mysqli->prepare($sql);//创建mysql_stmt对象$stmt->bind_param('sssiss',$username,$password,$sex,$age,$email,$mobile);//使用bind_param占位符绑定变量$data = ['username'=>'嫦娥','password'=> sha1('8888'),'age'=> 98,'sex'=>'女','email'=> 'ce@163.com','mobile'=> '15687874598',];//设定一个$data数组、将数值拆分为变量extract($data);//执行SQL$stmt->execute() or die($stmt->error);printf('您成功添加了%s条数据,主键ID是:%d',$stmt->affected_rows,$stmt->insert_id);$mysqli->close();//insert 重点:bind_param 设定占位符绑定变量,s代表字符串,i代表整数更多占位符查手册//execute() 执行SQL//affected_rows 返回执行成功的记录集//insert_id 返回执行成功的行号
2.PDO对数据库的添加:
表名 SET 表标题=?..;
<?phprequire'connect.php';$sql ="INSERT `user` SET `username`=?,`password`=?,`age`=?,`sex`=?,`email`=?,`mobile`=? ";$stmt = $pdo->prepare($sql);$username ='赤脚大仙';$sex ='男';$password =sha1('66666');$email ='cjdx@163.com';$mobile = '13745455656';$age = 388;$stmt->execute([$username,$password,$sex,$age,$mobile,$email]);if($stmt->rowCount()>0) exit('添加成功'.$stmt->rowCount().'条数据,主键ID:'.$pdo->lastInsertId());unset($pdo);//重点:execute();执行SQL,将变量写入数据库。//$stmt->rowCount() 如果SQL执行成功那就有值
数据表 SET 标题=?… WHRER 标题=;
require "connect.php";$sql = 'UPDATE `user` SET `username`=?,`password`=?,`sex`=?,`age`=?,`email`=?,`mobile`=? WHERE `Id`=?;';$stmt = $mysqli->prepare($sql);$stmt->bind_param('sssissi',$username,$password,$sex,$age,$email,$mobile,$id);$data = ['id'=> 317,'username'=>'嫦娥','password'=> sha1('7777'),'age'=> 78,'sex'=>'女','email'=> 'nw@163.com','mobile'=> '16667874598',];extract($data);$stmt->execute() or die($stmt->error);printf('更新成功了%s条数据',$stmt->affected_rows);$mysqli->close();//update重点:在SQL语句中的条件WHERE必须在bind_param中最后
数据表 SET 标题=?… WHRER 标题=;
<?phprequire 'connect.php';$sql = 'UPDATE `user` SET `username`=?,`password`=?,`sex`=?,`age`=?,`email`=?,`mobile`=? WHERE `Id`=?;';$stmt = $pdo->prepare($sql);$username ='赤脚大仙';$sex ='男';$password =sha1('66666');$email ='cjdx@163.com';$mobile = '13745455656';$age = 388;$id = 321;$stmt->execute([$username,$password,$sex,$age,$email,$mobile,$id]);if($stmt->rowCount()>0)exit('成功更新了'.$stmt->rowCount().'条数据');else echo('更新失败');
数据表 WHERE 标题=?;’;
<?php<?phprequire'connect.php';$sql = 'DELETE FROM `user` WHERE `Id`=?;';$stmt = $mysqli->prepare($sql);$stmt->bind_param('i',$id);$id=318;$stmt->execute() or die($stmt->error);printf('删除成功了%s条数据,主键ID是:',$stmt->affected_rows);$mysqli->close();
数据表 WHERE 标题=?;’;
<?phprequire 'connect.php';$sql = 'DELETE FROM `user` WhERE `Id` > ?;';$stmt=$pdo->prepare($sql);$id = 329;$stmt->execute([$id]);if($stmt->rowCount()>0) echo '成功删除'.$stmt->rowCount().'条记录'; else echo'';$pod=NULL;
1.mysqli对数据库的查询:
表名; 示例
<?phprequire'connect.php';$sql = 'SELECT * FROM `user`';$stmt = $mysqli->prepare($sql);$stmt->execute() or die(error());$result = $stmt->get_result();if($result->num_rows===0) echo '数据库为空!';while($res=$result->fetch_assoc()){vprintf('%d:%s | %s | %s<br>',$res);}$result->free();$mysqli->close();//select 重点//get_result 创建mysqliget_result 对象//fetch_assoc() 以关联返回单条数据//free() 释放结果集
2.mysqli对数据库的查询:
标题…, FROM 表名WHERE 标题=?; 示例
<?phprequire 'connect.php';$sql = 'SELECT `username`,`sex`,`mobile` FROM `user` WHERE `id` >?;';$stmt= $mysqli->prepare($sql);$stmt->bind_param('i',$id);$id = 3;$stmt->execute() or die($stmt->error);$stmt->bind_result($username,$sex,$mobile);$stmt->store_result();if($stmt->num_rows===0) exit('没有要查询的数据');while($stmt->fetch()){printf('%s | %s | %s <br>',$username,$sex,$mobile);}//select 重点://使用bind_result 字段和变量绑定// store_result 将所有记录集回传//fetch 遍历变量中的字段//个人理解,将bind_result中的记录集回传到$stmt//使用while将$stmt中的记录集循环输出。
3.mysqli对数据库的查询:
标题…, FROM 表名WHERE 标题=?; 示例
<?phprequire 'connect.php';$sql = 'SELECT `username` FROM `user` WHERE `Id`>?;';$stmt= $mysqli->prepare($sql);$stmt->bind_param('i',$id);$id = 3;$stmt->execute() or die($stmt->error);$result=$stmt->get_result();if($result->num_rows===0) exit('数据库为空');foreach($res=$result->fetch_all() as $user){vprintf('%s<br>',$user);}$result->free();$mysqli->close();//select foreach 重点://创建get_result对象,使用fetch_all获得记录集,使用foreach循环输出
4.PDO对数据库的查询:
标题…, FROM 表名WHERE 标题=?; 示例
<?phprequire 'connect.php';$sql="SELECT * FROM `user` WHERE `id` > ?";$stmt = $pdo->prepare($sql);$id =0;$stmt->execute([$id]);while ($user = $stmt->fetch()) {echo $user['username'].'<br>';}$pdo=NULL;
5.PDO对数据库的查询:
标题…, FROM 表名WHERE 标题=?;’; 示例
<?phprequire 'connect.php';$sql="SELECT * FROM `user` WHERE `id` > ?";$stmt = $pdo->prepare($sql);$id =0;$stmt->execute([$id]);foreach($res=$stmt->fetchAll() as $value){echo $value['username'].'<br>';}$pdo->NULL;
6.PDO对数据库的查询:
标题…, FROM 表名WHERE 标题=?;’; 示例
<?phprequire "connect.php";$sql='SELECT * FROM `user` WHERE `id` > ?;';$stmt=$pdo->prepare($sql);$id=1;$stmt->execute([$id]);$stmt->bindColumn('username',$username);$stmt->bindColumn('password',$password);$stmt->bindColumn('age',$age);$stmt->bindColumn('sex',$sex);$stmt->bindColumn('email',$email);$stmt->bindColumn('mobile',$mobile);while($stmt->fetch(PDO::FETCH_BOUND)){printf('%s|%s|%s|%s|',$username,$sex,$age,$mobile);echo "<br>";}$pdo=NULL;
$sql = 'SELECT COUNT(`id`) AS `count` FROM `user` WHERE `id` >?;';$stmt=$pdo->prepare($sql);$id=1;$stmt->execute([$id]);$stmt ->bindColumn('count',$count);$stmt ->fetch(PDO::FETCH_BOUND);echo '查询到了'.$count.'条记录';$pdo =null;
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号