热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysqli操作数据库

1连接数据库:可以使用对象或函数来连接(我们这里主要用mysqli对象,附带着函数连接)创建mysqli对象(也可以叫做资源句柄)$_mysqlinewmysqli();连接数

1 连接数据库:可以使用对象或函数来连接(我们这里主要用mysqli对象,附带着函数连接)

//创建mysqli对象(也可以叫做资源句柄)
$_mysqli = new mysqli();
//连接数据库
//如果不使用面向对象,完全可以使用mysqli_connect()函数来连接

$_mysqli->connect('localhost', 'root', 'kang123456', 'guest');

//断开mysqli
//mysqli_close()函数

$_mysqli->close();

还可以创建对象时直接连接

//创建mysqli对象时直接连接数据库
$_mysqli = new mysqli('localhost', 'root', 'kang123456', 'guest');
//另外选择一个数据库
$_mysqli->select_db('testguest');

$_mysqli->close();

2 错误:连接错误和操作错误

连接错误:

//连接错误
//当因为参数错误导致连接失败是,对象没有创建成功,所以就没有权力调用mysqli对象的方法,所以要用函数方式去捕捉错误

@$_mysqli = new mysqli('localhost', 'roo', 'kang123456', 'guest');
//0表示没有任何错误
if (mysqli_connect_errno()){
echo '数据库连接错误'.mysqli_connect_error();
exit();
}
$_mysqli->close();

操作错误:

//操作错误
@$_mysqli = new mysqli('localhost', 'root', 'kang123456', 'guest');
//选择一个不存在的数据库,产生操作错误
$_mysqli->select_db('dfas');
//操作错误
if ($_mysqli->errno){
echo '数据库操作错误'.$_mysqli->error;
exit();
}
$_mysqli->close();

3 与数据库进行交互:创建 获取 更新 删除

创建与获取

php
//操作错误
@$_mysqli = new mysqli('localhost', 'root', 'kang123456', 'testguest');
//1 设置编码
$_mysqli->set_charset('utf8');
//2 创建sql
$_sql = 'select * from tg_user';
//3 执行sql,把结果集赋给变量
$_result = $_mysqli->query($_sql);
//取得第一行数据,运行一次,指针下移一条
$_user = $_result->fetch_row();
//4 获取
//4-1 使用索引数组循环出用户名

while (!!$_row = $_result->fetch_row()){
echo $_row[3].'
';
}
//4-2 使用关联数组循环出用户名
while (!!$_assoc = $_result->fetch_assoc()){
echo $_assoc['tg_username'].'
';
}
//4-3 使用索引加关联数组
print_r($_result->fetch_array());
//4-4 使用oop方式,但返回的是对象
while (!!$_object = $_result->fetch_object()){
echo $_object->tg_username.'
';
}
?>

查看选择了多少行和影响了多少行:影响了多少行是mysqli下的属性

    //确定选择了多少行和受影响的行
@$_mysqli = new mysqli('localhost', 'root', 'kang123456', 'testguest');
if ($_mysqli->errno){
echo '数据库连接错误'.$_mysqli->error;
}
$_mysqli->set_charset('utf8');
$_sql = 'select * from tg_user limit 0,10';
$_result = $_mysqli->query($_sql);
//看选择了多少行,只有查
echo $_result->num_rows; //10
//增删改查影响了多少行(如果改成一样的影响0行)

echo $_mysqli->affected_rows;//10

获取字段(列)

    //1 查看结果集里有多少字段(列)
echo $_result->field_count;
//2 获取字段的名字,一次一个,指针下移
$_field = $_result->fetch_field();//返回的是对象
echo $_field->name; //tg_id
print_r($_field);//打印如下
/*
stdClass Object
(
[name] => tg_id
[orgname] => tg_id
[table] => tg_user
[orgtable] => tg_user
[def] =>
[db] => testguest
[catalog] => def
[max_length] => 2
[length] => 8
[charsetnr] => 63
[flags] => 49699
[type] => 9
[decimals] => 0
)
*/
//遍历
while (!!$_field = $_result->fetch_field()) {
echo $_field->name.'
';
}
//3 一次性取得所有字段
$_fields = $_result->fetch_fields(); //返回的是数组,每个是和上边一样的对象
print_r($_fields);
//遍历
foreach ($_fields as $_field){
echo $_field->name.'
';
}

移动指针:移动数据指针和移动字段指针

    //移动指针
//1 移动数据指针

$_result->data_seek(0);//移动到第0个就是原来的位置
$_row = $_result->fetch_row();
echo $_row[3];

//2 移动字段指针
$_result->field_seek(0);
$_field = $_result->fetch_field();
echo $_field->name; //tg_id

多条sql语句一起执行

    //创建三个修改的sql语句
$_sql .= 'update tg_user set tg_username="党兴明" where tg_id=43;';
$_sql .= 'update tg_flower set tg_fromuser="党兴明" where tg_id=1;';
$_sql .= 'update tg_friend set tg_fromuser="党兴明" where tg_id=1';
//一起执行
$_mysqli->multi_query($_sql);
    //创建三条选择数据
$_sql .= 'select * from tg_user;';
$_sql .= 'select * from tg_flower;';
$_sql .= 'select * from tg_friend';
//echo $_mysqli->multi_query($_sql); //1
if ($_mysqli->multi_query($_sql)){
//获取当前结果集
$_result = $_mysqli->store_result(); //第一条sql语句
print_r($_result->fetch_row());
echo '
';
//将结果集指针移动到下一条
$_mysqli->next_result();
$_result = $_mysqli->store_result(); //第二条sql语句
print_r($_result->fetch_row());
echo '
';
//将结果集指针移动到下一条
$_mysqli->next_result();
$_result = $_mysqli->store_result(); //第三条sql语句
print_r($_result->fetch_row());
}
else {
echo '错误';
exit();
}

事务:

    //事务
@$_mysqli = new mysqli('localhost', 'root', 'kang123456', 'testguest');
$_mysqli->set_charset('utf8');
//关闭自动提交
$_mysqli->autocommit(false);
//创建两个sql语句
$_sql .= 'update tg_flower set tg_flower=tg_flower-50 where tg_id=1;';
$_sql .= 'update tg_friend set tg_state=tg_state+50 where tg_id=1';

//执行多条sql语句,只有两句都成功就成功,否则回滚
if ($_mysqli->multi_query($_sql)){
//通过影响的行数,来判断是否成功执行,如果sql语句有误,那么就执行回滚,否则手工提交
$_success = $_mysqli->affected_rows == 1 ? true : false;
//下移指针
$_mysqli->next_result();
$_success2 = $_mysqli->affected_rows == 1 ? true : false;
//如果两条都成功
if ($_success && $_success2){
//手工提交
$_mysqli->commit();
echo '完美提交';
}
else {
//否则回滚
$_mysqli->rollback();
echo '回滚, 操作归零';
}
}
else {
echo '第一条有错误';
exit();
}
//开启自动提交
$_mysqli->autocommit(true);

 


推荐阅读
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • PHP连接MySQL的2种方法小结以及防止乱码【PHP】
    后端开发|php教程PHP,MySQL,乱码后端开发-php教程PHP的MySQL配置报错信息:ClassmysqlinotfoundinAnswer:1.在confphp.ini ... [详细]
author-avatar
周俪劳伦瑶的瑶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有