弱鸡养成第三天(2020.10.19)-php连接并简单操作数据库
弱鸡养成第三天(2020.10.19)-php连接并简单操作数据库
php连接数据库
连库基本操作
首先找到php.ini 文件中的这部分代码,去掉这两行开头原有的’;’,意味着使用这个“php_mysqli.dll”拓展功能。至于上面的"php_mysql.dll"为什么也要使用,是顺便加的-_-,强迫症犯了。

连接数据库
header('Content-type:text/html;charset=utf-8');
echo '
';
//php操作数据库的基本连接操作
//建立连接
$link = @mysqli_connect('localhost:3306','root','t123456789');//默认$link为超全局
if(mysqli_connect_errno()){
//连接错误的提示
var_dump(mysqli_connect_error());
}
//这部分就可以写执行数据库操作的代码了
//关闭数据库的连接
mysqli_close($link);
这样就php成功建立了与mysql的连接
在php中执行第一条mysql语句
php连接数据库,并向其中某个表添加一行。下面代码中出现的数据库和表需要提前建好,就不解释了。奇怪的是,编码格式必须改成gbk,不然在向数据库插入中文字段时会出错,详见下面代码注释解释。
header('Content-type:text/html;charset=gbk');//这里改成gbk了,为了和下面选择数据库编码同步
echo '
';
//php操作数据库的基本连接操作
//建立连接
$link = @mysqli_connect('localhost:3306','root','t123456789');//默认$link为超全局
if(mysqli_connect_errno()){
//连接错误的提示
var_dump(mysqli_connect_error());
}
//选择数据库编码
mysqli_set_charset($link,'gbk');//这里很讨厌,如果写utf8的话,下面的数据库插入语句会执行失败,需要将这个php文件另存为utf-8格式。无奈只能先改成gbk
//选择要连接的数据库
if( mysqli_select_db($link,'text') ){
echo '成功使用数据库text!';
}
else{
echo '使用数据库text失败!';
}//下面就可以使用php封装好的操作数据库的函数了
//添加操作
$query ='insert into student(姓名,学号,性别) values("王老五",55555,"男")';
var_dump( mysqli_query($link,$query) );
//留给下面的代码
//关闭数据库的连接
mysqli_close($link);
?>
关于gbk和utf-8的差别:https://www.cnblogs.com/churujianghudezai/p/11335978.html
php连接数据库后,选中某个表并遍历其每条记录的方式
在php中使用索引单条、关联单条、索引或关联的方式获得单条记录
将下面的代码插在上面代码的空白处即可运行
//索引数组的方式获得一条记录
$query ='select * from student';//预先写好mysql的查询语句
$result =mysqli_query($link,$query) ;//在数据库中执行语句,将结果返回到result中,result称为"结果集"
//索引数组的方式获取每一条记录
while($data_row= mysqli_fetch_row($result) ){
//每轮从result中取出一行记录,放在data_row中
var_dump($data_row );
}
//关联数组的方式获得一条记录
$query ='select * from student';
$result =mysqli_query($link,$query) ;
while($data_row= mysqli_fetch_assoc($result) ){
//每轮从result中取出一行记录,放在data_row中
var_dump($data_row );
}
//索引或关联数组的方式获得一条记录
$query ='select * from student';
$result =mysqli_query($link,$query) ;
//mysqli_fetch_array的第二个参数可选:MYSQLI_ASSOC,MYSQLI_NUM,MYSQLI_BOTH。默认是第三个BOTH,两种方式都选
while($data_row= mysqli_fetch_array($result,MYSQLI_NUM) ){
//每轮从result中取出一行记录,放在data_row中
var_dump($data_row );
}
(大的药来了!)
在php中使用索引或关联的方式获得全部记录
这个函数直接获得表的全部记录存在一个数组内,同样可以选择索引或关联的方式(常用这个)
$query ='select * from student';
$result =mysqli_query($link,$query) ;
//第二个参数同上,方式任君选择
$data_all=mysqli_fetch_all($result,MYSQLI_ASSOC);//这次采用关联的方式,换个口味
var_dump($data_all);
用返回对象的方式,获得选中表的字段信息
在php中获得包含 [一个字段的全部信息] 的一个对象
$query ='select * from student';
$result =mysqli_query($link,$query) ;
while( $data_row_obj =mysqli_fetch_field($result) ){//这个函数的返回类型是对象
var_dump( $data_row_obj);//显示这个字段的信息
}
在php中获得包含 [一个字段的全部信息] 的对象数组
$query ='select * from student';
$result =mysqli_query($link,$query) ;
$data_all_obj =mysqli_fetch_fields($result);//比上面的函数结尾多个s
var_dump( $data_all_obj);
获得行的数量,两种写法
这种写法纯属本人瞎试的(一看就是C语言用惯了)
//mysql
$query ='select count(*) from student';
$result =mysqli_query($link,$query);//注意result是一个包含字段信息的结果集对象,因此下面的打印要用面向对象的方式
echo ($result->field_count);//打印行数
库给的函数(咋感觉写起来还不如上面的快)
$query ='select * from student';
$result =mysqli_query($link,$query);
echo (mysqli_num_rows($result) );
释放结果集result的内存
好习惯很重要,在定义result的时候就该写好释放函数
$query ='select * from student';
$result =mysqli_query($link,$query);
mysqli_free_result($result);
复习上述操作函数
1.建立、关闭与MySQL服务器的连接
1)连接指定的mysql服务器
$mysqli_connect=@mysqli_connect($host, $user, $password,$database,$port);
2)连接错误时的提示
int mysqli_connect_errno ();//返回最后一次连接调用的错误代码
string mysqli_connect_error ();//返回一个字符串描述的最后一次连接调用的错误代码
3)设置默认字符编码
bool mysqli_set_charset ( mysqli $link , string $charset )
4)选择特定的数据库
bool mysqli_select_db ( mysqli $link , string $dbname);
5)关闭与mysql服务器的连接
bool mysqli_close ( mysqli $link );
2.执SQL语句
1)对数据库执行一条SQL语句
1>mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] );
①对于insert,update,delete等不会返回数据的SQL语句,在执行没有错误时将返回true。
②对于返回数据的SQL语句执行成功的时候会返回结果集对象可以使用操作结果集对象的函数来从中获取数据
2)操作结果集对象的函数
1>从结果集对象中解析数据的常见函数
①以索引数组的方式获取一条记录的数据
mixed mysqli_fetch_row ( mysqli_result $result );
重复使用以获取下一条记录的数据
②以关联数组的方式获取一条记录的数据
array mysqli_fetch_assoc ( mysqli_result $result );
重复使用以获取下一条记录的数据
③以索引数组或关联数组的方式获取一条记录的数据
mixed mysqli_fetch_array ( mysqli_result $result [, int $resulttype = MYSQLI_BOTH ] );
重复使用以获取下一条记录的数据
④以索引数组或关联数组的方式获取全部记录的数据
mixed mysqli_fetch_all ( mysqli_result $result [, int $resulttype = MYSQLI_NUM ] );
⑤返回结果集中的下一个字段信息
object mysqli_fetch_field ( mysqli_result $result );
⑥返回一个代表结果集字段的对象数组
array mysqli_fetch_fields ( mysqli_result $result );
⑦获取结果中行的数量
int mysqli_num_rows ( mysqli_result $result );
注意:如果使用MYSQLI_USE_RESULT模式则必须在获取完结果集才可使用该函数。
2>释放与一个结果集相关的内存
返回的结果集在数据量很大的时候需要很多的内存支持,所以在操作完结果集的时候有必要立刻释放与一个结果集相关的内
存, 释放之后,结果集就不可用了
void mysqli_free_result ( mysqli_result $result );
好好学习,天天向上!
弱鸡养成第三天(2020.10.19)-php连接并简单操作数据库相关教程
我要偷偷的学Python,然后惊呆所有人(第三天)
我要偷偷的学Python,然后惊呆所有人(第三天) 标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图我明天会再做一份,所以不急着带走 先把文章发出来,不能让在等待的朋友等太久 好,切入正题 文章目录 前言 “你的如意金箍棒”已到货,请签收 文件读
弱鸡养成第二天(2020.10.18)-php保存上传文件
弱鸡养成第二天(2020.10.18)-php保存上传文件 样例代码: form method='post' enctype='multipart/form-data' action='index2.php' input type='file' name='my_up_file' input type='submit' name='btn' value=上传 /form 对于enctype的解释: ?php header
设计模式系列 — 单例设计模式
设计模式系列 — 单例设计模式 点赞再看,养成习惯,微信搜一搜【一角钱技术】关注更多原创技术文章。 本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章。 23种设计模式速记 前面写了一篇对23种设计模式快速记忆的文章,有小伙伴说能不能提供一些
Java学习的第三天
Java学习的第三天 Java学习的第三天 1 .算法的流程主要包括顺序,分支,循环三种控制结构,Java中的控制语句有以下几类 分支结构:if-else;switch 循环结构:while;do-while;for 与循环转移(跳出循环有关的跳转语句):break;continue,return。 异常信
学SSM第三天-SpringMVC
学SSM第三天-SpringMVC SpringMVC概念 (1)springmvc 是什么? Spring web mvc属于表现层的框架,它是Spring框架的一部分 (2)springmvc 有什么用? 1、接收请求,获取参数 2、处理参数 3、将结果响应给浏览器 如 重定向或者请求转发或者返回jsonspringmvc就是
第三天
第三天 CSS:层叠样式表 ( Cascading Style Sheets ) 所有的样式,都包含在 style 标签内,表示是样式表。style 一般写到 /head 上方head style h4 { color: blue; font-size: 100px; } /style /head 空格规范 h3 { color: pink; } 3 ① 属性值前面,冒号后面
Spring Cloud分布式微服务实战 养成应对复杂业务的综合技术能力
Spring Cloud分布式微服务实战 养成应对复杂业务的综合技术能力 囊括门户平台+媒体中心+运营中心,好项目助力你全面成长进阶 明星讲师“风间影月”力作 后端主流技术综合应用 学员遍布各BAT大厂《Java架构师体系课》核心讲师 掌握Spring Cloud+MongoDB+Redi
第三天ospf 全网均是中心站点的配置
第三天ospf 全网均是中心站点的配置 第三天ospf 全网均是中心站点的配置 思路: 先分配网址,r4模拟运营商不能被宣告,所以14 24 34 之间的网段设为14.1.1.0/24 24.1.1.0/24 34.1.1.0/24 环回网段分别为1.1.1.0/24 2.2.2.0/24 3.3.3.0/24(预留一部分接口备