本文只针对 MySQLi 面向过程的函数使用方法。

1 数据库连接相关函数

mysqli_connect(host, user, pwd, db, port, socket), 全部参数都是可选的,默认会从php.ini文件中找对应的值。

$con = mysqli_connect($servername, $username, $pwd, $db);

if (mysqli_connect_errno()) // 返回连接错误的代码,没错误返回0

die(mysqli_connect_error()); // 返回连接错误的字符串,没错误返回null

...

mysqli_close($con);

2 SQL 常用函数

mysqli_insert_id($con), 返回最后一次查询所生成ID。

mysqli_affected_rows(con), 返回上一次insert/update/replace/delete/select影响的行数

mysqli_query($con, $sql [,resultatmode]), 返回结果集。

2a 调试

msyqli_errno(con), 返回最近用的函数的错误代码

mysqli_error(con), 返回最近用的函数的错误描述字符串

mysqli_error_list(con), 返回最近用的函数的错误列表(错误代码,错误文本,sqlistate的管理数组)

mysqli_info(con), 返回上一次查询的额外信息 string

mysqli_sqlstate(con), 返回最后一个SQLSTATE错误代码,‘00000’表示没有错误

mysqli_warning_count(con), 返回上一次查询的警告次数

2b 多个查询

mysqli_multi_query($con, $sql), 执行多个查询。

mysqli_next_result($con), 下一个结果集。

mysqli_more_result($con), 检查批量查询中是否还有查询结果。

mysqli_store_result(), 转移上次查询返回的结果集。

mysqli_user_result(),

3 处理结果集的函数

3a 行:

mysqli_data_seek(res, offset), 移动行指针,返回bool

mysqli_fetch_all(res, [type]), 返回结果集的所有行组成的数组,type索引或关联或两者

mysqli_fetch_array(res, [type]), 返回结果集中的当前行,type同上

mysqli_fetch_assoc(res), 返回结果集中的当前行,关联数组

mysqli_fetch_row(res), 返回结果集中的当前行,索引数组

mysqli_fetch_object(res), 返回结果集中的当前行,对象

mysqli_fetch_lengths(res), 返回当前行的每个字段长度组成的数组。

mysqli_num_rows(res), 结果集的行数。

3b 列:

mysqli_num_fields(res), 结果集的列数

mysqli_field_count(con), 当前结果集列的数量,值应该同上

mysqli_field_seek(res, offset), 移动列指针

mysqli_field_tell(res), 返回当前列指针位置

mysqli_fetch_fields(res), 返回结果集的所有列(字段)定义信息组成的数组,每个列定义信息是一个对象。

mysqli_fetch_field(res), 返回结果集中当前列定义信息,对象

mysqli_fetch_field_direct(res, n), 直接返回第n列定义信息,对象

3c 其它结果集函数

mysqli_fres_result(res), 释放结果集内存。

4 预处理相关函数

减少了分析时间,只做一次查询(尽管语句多次执行)

减少了服务器宽带,只需要发送查询的参数,而不是整个语句

防止sql注入,因为参数值发送或使用的协议,保证了数据的合法性

4a 预处理插入数据库

$sql = "insert into MyGuests (firstname, lastname, email)

values(?, ?, ?)";

$stmt = mysqli_stmt_init($con); // 初始化 statement对象

if (mysqli_stmt_prepare($stmt, $sql)) { // 预处理

mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);

$firstname = 'john';

$lastname ='Doe';

$email = 'john@gmail.com';

mysqli_stmt_execute($stmt);

$firstname = 'Mary';

$lastname ='Moe';

$email = 'mary@gmail.com';

mysqli_stmt_execute($stmt);

$firstname = 'Julie';

$lastname ='Dooley';

$email = 'julie@gmail.com';

mysqli_stmt_execute($stmt);

} else {

echo 'something wrong!';

echo PHP_EOL;

}

mysqli_close($con);

4b 预处理处理结果集,方法一

$stmt = mysqli_stmt_init($con);

$sql = "select * from MyGuests where id = ?";

if (mysqli_stmt_prepare($stmt, $sql)) {

$id = 3;

mysqli_stmt_bind_param($stmt, 'i', $id);

mysqli_stmt_execute($stmt);

mysqli_stmt_bind_result($stmt, $col1, $col2, $col3, $col4, $col5);

mysqli_stmt_fetch($stmt);

for ($i=1;$i<6;$i++) {

print_r(${'col'.$i});

echo PHP_EOL;

}

} else {

echo 'prepare doesn\'t work!';

echo PHP_EOL;

}

4c 预处理处理结果集,方法二

$sql = "select * from MyGuests where id = ?";

if ($stmt=mysqli_prepare($con, $sql)) {

mysqli_stmt_bind_param($stmt, 'i', $id);

$id =3;

mysqli_stmt_execute($stmt);

mysqli_stmt_bind_result($stmt, $col1, $col2, $col3, $col4, $col5);

mysqli_stmt_fetch($stmt);

for ($i=1;$i<6;$i++) {

print_r(${'col'.$i});

echo PHP_EOL;

}

} else {

echo 'prepare doesn\'t work!';

echo PHP_EOL;

}

5 事务处理

$sql1 = '。。。';

$sql2 = '。。。';

mysqli_autocommit($con, false);

if (mysqli_query($con, $sql1) && mysqli_query($con, $sql2)) {

mysqli_commit($con);

echo 'ok';

} else {

mysqli_rollback($con);

echo 'not ok';

}

echo PHP_EOL;

mysqli_autocommit(true);

php连接mysqli面向过程,PHP基础知识总结:MySQLi 面向过程相关推荐

  1. 关于计算机的发展过程及基础知识正确的是,2011doc-计算机基础知识.doc

    2011doc-计算机基础知识.doc 一.单选题 (每小题1分) . 计算机中,浮点数由两部分组成,它们是( ). A.整数部分和小数部分?? B.阶码部分和基数部分 C.基数部分和尾数部分?? D ...

  2. 计算机网络把许多什么连接在一起,计算机网络技术基础知识汇总习题

    计算机网络技术基础知识汇总习题 1.21世纪要实现信息化,就必须依靠完善的网络,这里的网络是指,向用户提供不同服务的 电信网络,有线电视网络和计算机网络三种网络.(电信网络,有线电视网络,计算机网络) ...

  3. 项目管理的5大过程/ 9大知识领域/44个子过程

    项目管理的5大过程分别是: (1)启动过程 (2)规划过程 (3)执行过程 (4)监控过程 (5)收尾过程 9大知识领域分别是: (1)项目整合管理 (2)项目范围管理 (3)项目时间管理 (4)项目 ...

  4. socket通信需要网线连接吗_socket网络编程基础知识篇

    网络通信是一种进程间通信(IPC, Inter-Process Communication),要求位于不同网络节点不同进程的通信双方必须遵循统一的通信协议方可实现.基于套接字(Socket)通信是应用 ...

  5. UDP-无连接的传输层协议-基础知识

    用户数据报协议(User Data Protocol,UDP)的特点为: 简单轻量级. 不可靠. 面向数据报. 无连接 传输层协议 UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据 ...

  6. JVM基础知识---对象的创建过程

    对象的创建过程 一. 对象的创建过程 ①. 类加载检查 ②.分配内存 ③. 初始化零值 ④. 设置对象头 ⑤. 执行init方法 二. 对象的内存布局 ①. 对象头 ②. 实例数据 ③. 对齐填充 三 ...

  7. 【线性回归】面向新手的基础知识

    文章目录 线性回归建模 线性回归损失函数.代价函数.目标函数 线性回归模型的求解方法 1. 梯度下降法 2. 最小二乘法 带有正则化项的回归模型 回归任务的评价指标 1. 平均绝对误差(MAE) 2. ...

  8. 从零开始之驱动发开、linux驱动(六十三、内核调试篇--基础知识1[earlyprintk建立过程])

    我们知道,内核中使用__section设置了很多的段属性,使用段属性可以很方便的对函数调用时间分层. 比如我们之前常见的subsys_initcall,就要比module_init更早的执行,因为su ...

  9. python开发基础知识

    啦啦啦 Python基础知识 面向对象和面向过程的区别 装饰器 Python装饰器@staticmethod和@classmethod区别和使用 深拷贝.浅拷贝和等号赋值 GIL 类 Python内存 ...

最新文章

  1. python 类装饰器 __set___python装饰器代替set get方法实例
  2. C++ 循环链表circular linked list实现算法(附完整源码)
  3. SAP UI5 Repository and MongoDB Repository
  4. python逐行读取字符串_python3.4.3下逐行读入txt文本并去重的方法
  5. LFS(Linux From Scratch)学习
  6. iPhone 11办理联通5G套餐后,上网速度变快?网友:发广告翻车了?
  7. 我的世界java手机版怎么调按键_博阅Likebook P6高配青春版使用评测
  8. java 数据结构--希尔排序
  9. uniapp/vue 组件之间的传值
  10. 金蝶K3 数据表知识整理(不断完善)
  11. 计算机发展历程 思维导图
  12. 同工作组计算机连接用户名和密码错误,登录失败: 未知的用户名或错误密码
  13. python shell 运行py文件,python怎么运行py文件
  14. 服务器协议和交换机怎么转换,服务器与交换机连接怎样配置
  15. 浅谈css3的轮播图
  16. nyoj 1099 Lan Xiang's Square (水题)
  17. 用css给video视频标签上添加渐变效果
  18. C语言基础之输出m到n之间的素数
  19. 苹果自助维修服务上线:维修工具租赁价约为321元
  20. 【BSP视频教程】STM32H7视频教程第3期:整体捋顺STM32H7的HAL库和LL库的框架,再配合寄存器造轮子找到更适合自己的玩法(2022-01-21)

热门文章

  1. Python递归算法以及命名空间
  2. python衍生特征
  3. Python加lxml实现图片解析下载功能
  4. 什么是Linux系统调用system call?(Linux内核中设置的一组用于实现各种系统功能的子程序)(区别于标准C库函数调用)核心态和用户态的概念、中断的概念、系统调用号、系统调用表
  5. python 如何将虚拟环境的项目的所有.py文件的import导包汇总到requirements.txt文件 (pipreqs)
  6. 人体姿态估计论文总结 (2D + 视频)
  7. linux环境下安装mysql 8.0
  8. wxpython设置listctrl选中行_Excel办公实操,进行给特定行(列),重复打印与避免打印...
  9. 怎么通俗的理解Netty呢?
  10. 简单有效提升服务器性能,4个简单操作,让你的服务器性能飞速提升!