批改状态:合格
老师批语:知识点看起来, 总结一下没多少的不是吗?
第一种方式
直接在写在创建Mysql对象中。这不建议用。建议写在一个配置文件中
//建立到Mysql的链接$mysqli= new mysqli('127.0.0.1','root','123456','zl.com');
第二种方式:新建config.php文件
return['type'=>$type??'mysqli','host'=>$host??'localhost','port'=>$port??'3306','dbname'=>$dbname??'phpcnyizhi','dbuser'=>$dbuser??'phpcnyizhi','dbpwd'=>$dbpwd??'phpcnyizhi','charset'=>$charset??'utf8'];
使用上面第二种方式连接
//引入配置文件,得到一个关联数组$config=require (__DIR__.'/../config.php');//数组拆分为变量extract($config);//创建Mysqli对象$mysqli= new mysqli($host,$dbuser,$dbpwd,$dbname);//无法链接时,输出错误信息//connect_errno 返回最后一次连接数据库的错误代码//connect_error回最后一次连接数据库的错误描述,为字符串if($mysqli->connect_errno){die("CONNECT_ERROR:".$mysqli->connect_error);}//设置默认的客户端字符集$mysqli->set_charset('utf-8');
//引入通用文件require ('connect.php');$sql="INSERT `yizhi_user` SET `username`=?,`password`=?,`cid`=?";$stmt=$mysqli->prepare($sql);$stmt->bind_param('ssi',$username,$password,$cid);/ 插入方式一:直接给绑定的变量赋值// $username='王五1';// $password=md5('123456');// $cid=1;// 插入方式二:数组的形式$data=['username'=>'赵六','password'=>md5('123456'),'cid'=>1];extract($data);$res=$stmt->execute();if($res){printf("新增加了%s条纪录,插入的纪录ID是%d,<br>",$stmt->affected_rows,$stmt->insert_id);}// 关闭$mysqli->close()
require ('connect.php');$sql="DELETE FROM `yizhi_user` WHERE `id`=?";$stmt=$mysqli->prepare($sql);$stmt->bind_param('i',$id);$id=14;if($stmt->execute()){printf("删除了%s条纪录,<br>",$stmt->affected_rows);}else{exit(printf("操作失败,失败编号d%,失败错误信息s%",$stmt->errno,$stmt->error));};$mysqli->close();
require ('connect.php');$sql="UPDATE `yizhi_user` SET `username`=?,`password`=?,`cid`=? WHERE `id`>?";$stmt=$mysqli->prepare($sql);$stmt->bind_param('ssii',$username,$password,$cid,$id);//用关联数组形式$data=['username'=>'赵六u','password'=>md5('123456'),'cid'=>1,'id'=>10];extract($data);if($stmt->execute()){printf("更新了%s条纪录,<br>",$stmt->affected_rows);}else{exit(printf("操作失败,失败编号d%,失败错误信息s%",$stmt->errno,$stmt->error));};$mysqli->close();
//1.连接require ('connect.php');//2.查询$sql="SELECT * FROM `yizhi_user` WHERE `id`>?";$stmt=$mysqli->prepare($sql);$id=10;$stmt->bind_param('i',$id);$stmt->execute() or die($stmt->error);//获取结果集$res=$stmt->get_result();if($res->num_rows===0){exit("结果为空");}//以关联数组形式返回一条纪录// print_r ($res->fetch_assoc());//循环输出结果集 第一种循环方式while($user=$res->fetch_assoc()){vprintf("id:%d|名字:%s|密码:%s|cid:%d<br>",$user);}echo "共有{$res->num_rows}条纪录";//释放结果集$res->free();//关闭$mysqli->close();
//fetch_all以二维关联数组方式返回。参数值 关联数组MYSQLI_ASSOC,数值索引数组MYSQLI_NUM,或者两者皆有MYSQLI_BOTH的方式$users=$res->fetch_all(MYSQLI_ASSOC);//默认是MYSQLI_NUMforeach($users as $user){vprintf("id:%d|名字:%s|密码:%s|cid:%d<br>",$user);}
//1.连接require ('connect.php');//2.查询$sql="SELECT `username`,`password`,'cid' FROM `yizhi_user` WHERE `id`>?";$stmt=$mysqli->prepare($sql);$id=10;$stmt->bind_param('i',$id);$stmt->execute() or die($stmt->error);//3.字段与变量绑定$stmt->bind_result($username,$password,$cid);//因为当前操作不涉及结果集对象,如果要获取结果集中的数量,用以下两行代码$stmt->store_result();if($stmt->num_rows===0)exit("没有内容");while($stmt->fetch()){printf("名字:%s|密码:%s|cid:%d<br>",$username,$password,$cid);}//4.关闭$mysqli->close();
//导出数据库配置,就是一个关联数组$config=require (__DIR__.'/../config.php');extract($config); //数组拆分为变量//1创建PDO对象//$dsn数据源名称//$dsn="mysql:host=localhost;dbname=phpcnyizhi;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,$dbuser,$dbpwd);//设置纪录集的默认获取方式,只关心关联数组部分$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);}//捕捉特定于数据库信息的PDOException异常catch(PDOException $e){echo $e->getMessage();}//捕捉拥有Throwable接口的错误或者其它异常catch(Throwable $e){echo $e->getMessage();}
require ('connect.php');$sql="INSERT `yizhi_user` SET `username`=?,`password`=?,`cid`=?";$stmt=$pdo->prepare($sql);$stmt->bindParam(1,$username,PDO::PARAM_STR,30);$stmt->bindParam(2,$password,PDO::PARAM_STR,100);$stmt->bindParam(3,$cid,PDO::PARAM_STR,50);$username="张飞";$password=md5('123456');$cid=1;$stmt->execute();if($stmt->rowCount() > 0){echo "新增成功".$stmt->rowCount()."条纪录,主键ID".$pdo->lastInsertId();}else{exit("失败");}//关闭//$pdo=null;unset($pdo);
require ('connect.php');$sql="INSERT `yizhi_user` SET `username`=?,`password`=?,`cid`=?";$stmt=$pdo->prepare($sql);//值绑定,直接给execute传参来实现$stmt->execute(['关羽',md5('123456'),1]);if($stmt->rowCount() > 0){echo "新增成功".$stmt->rowCount()."条纪录,主键ID".$pdo->lastInsertId();}else{exit("失败");}//关闭//$pdo=null;unset($pdo);
require ('connect.php');$sql="UPDATE `yizhi_user` SET `cid`=? WHERE id>?";$stmt=$pdo->prepare($sql);$stmt->execute([5,15]);if($stmt->rowCount() > 0){echo "更新".$stmt->rowCount()."条纪录";}else{exit("失败");}//关闭//$pdo=null;unset($pdo);
require ('connect.php');$sql="DELETE FROM `yizhi_user` WHERE id>?";$stmt=$pdo->prepare($sql);$stmt->execute([25]);if($stmt->rowCount() > 0){echo "删除".$stmt->rowCount()."条纪录";}else{exit("失败");}//关闭//$pdo=null;unset($pdo);
//1.连接require ('connect.php');//2.查询$sql="SELECT * FROM `yizhi_user` WHERE `id`>?";$stmt=$pdo->prepare($sql);$stmt->execute([15]);// print_r ($stmt->fetch());// print_r ($stmt->fetch());// print_r ($stmt->fetch());//循环输出结果集 第一种循环方式while($user=$stmt->fetch()){vprintf("id:%d|名字:%s|密码:%s|cid:%d<br>",$user);}//关闭//$pdo=null;unset($pdo);
require ('connect.php');//2.查询$sql="SELECT * FROM `yizhi_user` WHERE `id`>?";$stmt=$pdo->prepare($sql);$stmt->execute([10]);$users=$stmt->fetchall();//默认是MYSQLI_NUMforeach($users as $user){vprintf("id:%d|名字:%s|密码:%s|cid:%d<br>",$user);}//关闭//$pdo=null;unset($pdo);
require ('connect.php');//2.查询$sql="SELECT * FROM `yizhi_user` WHERE `id`>?";$stmt=$pdo->prepare($sql);$stmt->execute([5]) or die($stmt->error);//3.字段与变量绑定$stmt->bindColumn('username',$username);$stmt->bindColumn('password',$password);//PDO::FETCH_BOUND 以布尔值的形式返回结果,同时将获取的列值赋给bindParam()方法中指定的变量。while($stmt->fetch(PDO::FETCH_BOUND)){printf("名字:%s|密码:%s<br>",$username,$password);}//获取影响的纪录数$sql="SELECT COUNT(`id`) AS `count` FROM `yizhi_user` WHERE id>?";$stmt=$pdo->prepare($sql);$stmt->execute([5]) or die($stmt->error);$stmt->bindColumn('count',$count);$stmt->fetch(PDO::FETCH_BOUND);echo "查询到{$count}条数据";//关闭//$pdo=null;unset($pdo);
| 序号 | 步骤 | 描述 |
|---|---|---|
| 1 | 连接数据库 | 使用Mysqli或PDO连接 |
| 2 | 操作数据库 | sql语句新增、更新、删除、查询 |
| 3 | 获取以及释放结果集 | 仅针对查询操作有效,清空查询结果的过程。其它无效 |
| 4 | 关闭数据库链接 | 销毁数据库连接对象 |
| 序号 | 参数 | 描述 |
|---|---|---|
| 1 | type |
数据库类型 |
| 2 | host |
数据库主机名 |
| 3 | dbname |
数据库名称 |
| 4 | charset |
字符集 |
| 5 | port |
端口号 |
| 6 | username |
用户名 |
| 7 | password |
密码 |
| 序号 | 属性/方法 | 描述 |
|---|---|---|
| 1 | connect_errno |
连接错误编码 |
| 2 | connect_error |
连接错误信息 |
| 3 | set_charset |
设置字符集 |
| 4 | prepare |
创建mysqli_stmt对象 |
| 序号 | 属性/方法 | 描述 |
|---|---|---|
| 1 | bind_param() |
占位符与变量绑定 |
| 2 | bind_result() |
字段与变量绑定 |
| 3 | execute() |
执行 SQL 语句 |
| 4 | get_result() |
创建mysqli_result 对象 |
| 5 | fetch() |
遍历变量中的字段 |
| 6 | close() |
关闭预处理查询 |
| 7 | affected_rows |
受影响记录数量 |
| 8 | insert_id |
新增记录主键 id |
| 9 | errno |
错误编号 |
| 10 | error |
错误信息 |
| 序号 | 属性/方法 | 描述 |
|---|---|---|
| 1 | fetch_assoc() |
以关联数组返回一条记录 |
| 2 | fetch_all() |
获取全部记录 |
| 3 | num_rows |
结果集记录数量 |
| 4 | free() |
释放结果集 |
| 序号 | 属性/方法 | 描述 |
|---|---|---|
| 1 | setAttribute() |
设置属性 |
| 2 | lastInsertId() |
最后插入记录的主键 id |
| 3 | prepare() |
创建PDOStatement对象 |
| 序号 | 属性/方法 | 描述 |
|---|---|---|
| 1 | execute() | 执行预处理语句,也可以传参,用于值绑定 |
| 2 | fetchAll() | 获取结果集,通常会传参数 PDO::FETCH_ASSOC 得到一个二维关联数组 |
| 3 | fetch() | 从结果集中获取下一行,通常会传参 PDO::FETCH_ASSOC 得到关联数组 |
| 4 | bindColumn() | 绑定每个字段到对应的变量 |
| 5 | rowCount() | 受影响的行数 |
| 6 | bindParam() | 绑定占位符与变量名 |
| 7 | bindValue() | 绑定占位符与值 |
跟着学习,难度不大,关键要自己练习,才能记忆下来。做好笔记,忘记时看看,时常温习!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号