案例演示准备:首先生成一张student表和规范表的一些字段。
create table student
(
stu_id tinyint unsigned auto_increment not null primary key,
stu_name varchar(20) not null,
stu_psd varchar(32) not null,
stu_age tinyint(3) unsigned default '18'
);
查看一个表中有哪些字段:
查看一个表中有哪些字段:
查看一个表的字段类型信息
添加记录
一次插入一条记录
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
//如果有连接错误,得到错误信息
die('Connect Error:'.$mysqli -> connect_error);
}
# 2.设置默认的客户端编码方式
$mysqli -> set_charset('utf-8');
# 3.执行SQL预处理查询。
//生成一张表和一些字段。
$sql = <<< EOF
insert student(stu_name,stu_psd) values('钱万','123456');
EOF;
# 4.只能执行一条sql语句,调用query()方法
$res = $mysqli -> query($sql);
if($res){
//得到上一条插入操作产生的auto_increment的值
echo '恭喜你,你是第'.$mysqli -> insert_id.'个注册账号的学生!<br/>';
}else{
//得到上一步操作产生的错误编号和错误信息
echo 'error '.$mysqli -> errno.':'.$mysqli -> error;
}
# 5.关闭数据库连接
$mysqli -> close();
?>
一次插入多条记录
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
//如果有连接错误,得到错误信息
die('Connect Error:'.$mysqli -> connect_error);
}
# 2.设置默认的客户端编码方式
$mysqli -> set_charset('utf-8');
# 3.执行SQL预处理查询。
$sql = <<< EOF
insert student(stu_name,stu_psd)
values('钱万2','123456'),('钱万3','123456'),('钱万4','123456');
EOF;
# 4.只能执行一条sql语句,调用query()方法
$res = $mysqli -> query($sql);
if($res){
//得到上一条插入操作产生的auto_increment的值
echo '恭喜你,你是第'.$mysqli -> insert_id.'个注册账号的学生!<br/>';
}else{
//得到上一步操作产生的错误编号和错误信息
echo 'error '.$mysqli -> errno.':'.$mysqli -> error;
}
# 5.关闭数据库连接
$mysqli -> close();
?>
代码里面的sql插入语句还可以写成双引号的形式:
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
//如果有连接错误,得到错误信息
die('Connect Error:'.$mysqli -> connect_error);
}
# 2.设置默认的客户端编码方式
$mysqli -> set_charset('utf-8');
# 3.执行SQL预处理查询。
$sql = <<< EOF
insert student(stu_name,stu_psd)
values('钱万2','123456'),('钱万3','123456'),('钱万4','123456');
EOF;
$sql1 = "insert student(stu_name,stu_psd)
values('钱万5','123456'),('钱万6','123456'),('钱万8','123456')";
# 4.只能执行一条sql语句,调用query()方法
$res = $mysqli -> query($sql1);
if($res){
//得到上一条插入操作产生的auto_increment的值
echo '恭喜你,你是第'.$mysqli -> insert_id.'个注册账号的学生!<br/>';
}else{
//得到上一步操作产生的错误编号和错误信息
echo 'error '.$mysqli -> errno.':'.$mysqli -> error;
}
# 5.关闭数据库连接
$mysqli -> close();
?>
mysqli实例下的affected_rows属性:得到上一步操作产生的受影响的记录条数
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
//如果有连接错误,得到错误信息
die('Connect Error:'.$mysqli -> connect_error);
}
# 2.设置默认的客户端编码方式
$mysqli -> set_charset('utf-8');
# 3.执行SQL预处理查询。
$sql = <<< EOF
insert student(stu_name,stu_psd)
values('孙前方','123456'),('宋万册3','123456'),('李白三','123456');
EOF;
$sql1 = "insert student(stu_name,stu_psd)
values('钱万5','123456'),('钱万6','123456'),('钱万8','123456')";
# 4.只能执行一条sql语句,调用query()方法
$res = $mysqli -> query($sql);
if($res){
//得到上一条插入操作产生的auto_increment的值
echo '恭喜你,你是第'.$mysqli -> insert_id.'个注册账号的学生!<br/>';
echo '有'.$mysqli -> affected_rows.'条记录受到影响';
}else{
//得到上一步操作产生的错误编号和错误信息
echo 'error '.$mysqli -> errno.':'.$mysqli -> error;
}
# 5.关闭数据库连接
$mysqli -> close();
?>
更新操作
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
//如果有连接错误,得到错误信息
die('Connect Error:'.$mysqli -> connect_error);
}
# 2.设置默认的客户端编码方式
$mysqli -> set_charset('utf-8');
# 3.执行SQL预处理查询。
//年龄增加5岁
$sql = <<< EOF
update student set stu_age=stu_age+5;
EOF;
# 4.只能执行一条sql语句,调用query()方法
$res = $mysqli -> query($sql);
if($res){
echo '有'.$mysqli -> affected_rows.'条记录被更新';
}else{
//得到上一步操作产生的错误编号和错误信息
echo 'error '.$mysqli -> errno.':'.$mysqli -> error;
}
# 5.关闭数据库连接
$mysqli -> close();
?>
删除记录
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
//如果有连接错误,得到错误信息
die('Connect Error:'.$mysqli -> connect_error);
}
# 2.设置默认的客户端编码方式
$mysqli -> set_charset('utf-8');
# 3.执行SQL预处理查询。
//将表中id<10的用户删掉
$sql = <<< EOF
delete from student where stu_id < 10;
EOF;
# 4.只能执行一条sql语句,调用query()方法
$res = $mysqli -> query($sql);
if($res){
echo '有'.$mysqli -> affected_rows.'条记录被删除';
}else{
//得到上一步操作产生的错误编号和错误信息
echo 'error '.$mysqli -> errno.':'.$mysqli -> error;
}
# 5.关闭数据库连接
$mysqli -> close();
?>
affected_rows属性返回的值分为三种:
- 1.受影响的记录条数,一般我们做逻辑判断让 affected_rows == 1 或者affected_rows > 0
- 2.返回-1,代表sql语句有问题
- 3.返回0 ,代表没有受影响的记录条数
查询操作
select关键字返回的是一个mysqli对象,并不像update、delete、insert直接可以拿到结果。
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
//如果有连接错误,得到错误信息
die('Connect Error:'.$mysqli -> connect_error);
}
# 2.设置默认的客户端编码方式
$mysqli -> set_charset('utf-8');
# 3.执行SQL查询。
$sql = "select stu_id,stu_name,stu_age from student";
$mysqli_result = $mysqli -> query($sql);
var_dump($mysqli_result);
# 5.关闭数据库连接
$mysqli -> close();
?>
我们可以得到一个mysqli_result对象,在这个对象里面我们还可以得到如下属性:
- current_field:当前的字段信息
- field_count: 字段的数量
- lengths: 长度
- num_rows: 得到结果中的记录条数,经常用到这个属性
以num_rows属性作为逻辑判断打印页面信息
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
//如果有连接错误,得到错误信息
die('Connect Error:'.$mysqli -> connect_error);
}
# 2.设置默认的客户端编码方式
$mysqli -> set_charset('utf-8');
# 3.执行SQL查询。
$sql = "select stu_id,stu_name,stu_age from student";
$mysqli_result = $mysqli -> query($sql);
if($mysqli_result && $mysqli_result -> num_rows > 0){
echo '共查找到有'.$mysqli_result -> num_rows.'条结果集';
}else {
echo '查询错误或者结果集当中没有记录!';
}
# 5.关闭数据库连接
$mysqli -> close();
?>
$mysqli_result下调用fetch_all()函数,获取结果集中的所有记录,默认返回的是一个二维数组。
- fetch_all(MYSQLI_NUM):返回数组中索引部分
- fetch_all(MYSQLI_ASSOC):返回数组中关联部分,即字段部分
-
fetch_all(MYSQLI_BOTH):返回索引部分+字段部分
$mysqli_result下调用fetch_row()函数,获取结果集中的第1条记录。
案例代码:
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
//如果有连接错误,得到错误信息
die('Connect Error:'.$mysqli -> connect_error);
}
# 2.设置默认的客户端编码方式
$mysqli -> set_charset('utf-8');
# 3.执行SQL查询。
$sql = "select stu_id,stu_name,stu_age from student";
$mysqli_result = $mysqli -> query($sql);
if($mysqli_result && $mysqli_result -> num_rows > 0){
//$rows = $mysqli_result -> fetch_all();//获取结果集中的所有记录,默认返回一个二维数组
//$rows = $mysqli_result -> fetch_all(MYSQLI_NUM); //获取结果集中的索引部分,默认
//$rows = $mysqli_result -> fetch_all(MYSQLI_ASSOC); //获取结果集中字段部分
//$rows = $mysqli_result -> fetch_all(MYSQLI_BOTH); //获取结果集中索引+字段部分
$row = $mysqli_result -> fetch_row();//获取结果集中的第一条信息
print_r($row);
}else {
echo '查询错误或者结果集当中没有记录!';
}
# 5.关闭数据库连接
$mysqli -> close();
?>
获取结果集中的一条记录的几种形式:
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
//如果有连接错误,得到错误信息
die('Connect Error:'.$mysqli -> connect_error);
}
# 2.设置默认的客户端编码方式
$mysqli -> set_charset('utf-8');
# 3.执行SQL查询。
$sql = "select stu_id,stu_name,stu_age from student";
$mysqli_result = $mysqli -> query($sql);
if($mysqli_result && $mysqli_result -> num_rows > 0){
$row = $mysqli_result -> fetch_row();//获取结果集中的第一条记录,作为索引数组返回
print_r($row);
echo '<hr/>';
//每fetch一次,结果集的指针就会下移一位
$row = $mysqli_result -> fetch_assoc();//获取结果集中的一条记录,作为关联数组返回
print_r($row);
echo '<hr/>';
$row = $mysqli_result -> fetch_array();//获取结果集中的一条记录,索引数组+关联数组
print_r($row);
echo '<hr/>';
$row = $mysqli_result -> fetch_array(MYSQLI_ASSOC);//获取结果集中的一条记录,作为类型返回
print_r($row);
echo '<hr/>';
$row = $mysqli_result -> fetch_object();//获取结果集中的一条记录,作为对象返回
print_r($row);
//调整结果集指针,移动结果集中的内部指针
echo '<hr/>';
$row = $mysqli_result -> data_seek(0);//获取结果集中的一条记录,作为对象返回
$row = $mysqli_result -> fetch_assoc();
print_r($row);
}else {
echo '查询错误或者结果集当中没有记录!';
}
# 5.关闭数据库连接
$mysqli -> close();
?>
释放结果集内容的三种形式:任选其一使用
$mysqli_result -> free();
$mysqli_result -> free_result();
$mysqli_result -> close();
遍历获取结果集
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
//如果有连接错误,得到错误信息
die('Connect Error:'.$mysqli -> connect_error);
}
# 2.设置默认的客户端编码方式
$mysqli -> set_charset('utf-8');
# 3.执行SQL查询。
$sql = "select stu_id,stu_name,stu_age from student";
$mysqli_result = $mysqli -> query($sql);
if($mysqli_result && $mysqli_result -> num_rows > 0){
//通过遍历获取所有的结果集
while($rows = $mysqli_result -> fetch_assoc()){
print_r($rows);
}
//释放结果集内容的三种形式:
$mysqli_result -> free();
//$mysqli_result -> free_result();
//$mysqli_result -> close();
}else {
echo '查询错误或者结果集当中没有记录!';
}
# 5.关闭数据库连接
$mysqli -> close();
?>
php里面有()的是函数方法,没括号的是属性,->用来引用对象的成员(属性与方法);::指以“静态方式static”操作某个“类”的成员方法或属性。
网友评论