-
MySQLi扩展库
2016-03-29 19:00:25首先,如果想要使用MySQLi扩展库,那么就需要在php扩展中加入MySQLi,一般的环境都会预先装好这个扩展,如果没有那么你需要去下载一个php_mysqli.dll的扩展文件,然后在你的php.ini中开启这个扩展,那么当我们配置好...首先,如果想要使用MySQLi扩展库,那么就需要在php扩展中加入MySQLi,一般的环境都会预先装好这个扩展,如果没有那么你需要去下载一个php_mysqli.dll的扩展文件,然后在你的php.ini中开启这个扩展,那么当我们配置好了一切之后如何查看我们的MySQLi扩展是否已经启动了呢。
/* - 方法一 - 如果返回true代表开启成功,false代表开启失败 */ var_dump(extension_loaded('mysqli')); /* - 方法二 - 查看所有已开启的扩展 - 返回值为一个数组 */ $extension = get_loaded_extensions(); //会显示出所有的扩展 print_r($extension); //查看是否包含mysqli扩展 if(in_array('mysqli',$extension)) { echo 'mysqli扩展开启成功'; }else { echo 'mysqli扩展开启失败'; }
通过MySQLi类库操作数据库的步骤
- 建立到MySQL的连接
- 打开指定的数据库
- 设置默认客户端的字符集
- 执行SQL查询
- 释放结果集
- 关闭连接
1.建立到MySQL的连接和打开指定的数据库
/* * 方法一 */ $mysqli = new mysqli('localhost','root','');//连接mysql $mysqli->select_db('test'); //选择数据库 /* * 方法二 */ $mysqli = new mysqli(); $mysqli->connect('localhost','root','');//连接到mysql /* * 方法三 */ $mysqli = @new mysqli('localhost','root','','test');//连接到mysql并选择数据库 //如果连接错误 //$mysqli->connect_errno:连接产生的错误编号 //$mysqli->connect_error:连接产生的错误信息 if($mysqli->connect_errno) { die('Connect Error:'.$mysqli->connect_error); }
2.设置客户端的编码方式
$mysqli->set_charset('utf8');
3.执行SQL查询
$sql = <<<EOF CREATE TABLE mysqli( id TINYINT UNSIGNED AUTO_INCREMENT KEY, username VARCHAR(20) NOT NULL ); EOF; $res = $mysqli->query($sql); var_dump($res);//结果正确输出boolean true
4.关闭连接
$mysqli->close();
简单实用MySQLi事务的例子
例如我有一个account表,表中有id,姓名,钱包。
向表中插入两条数据
如果我想要实现,zjp给wxd转账200块,那么就需要使用两个update语句来实现。//zjp钱数减少200 $sql = "UPDATE account SET money=money-200 WHERE name='zjp'"; //wxd钱数增加200 $sql = "UPDATE account SET money=money+200 WHERE name='wxd'";
如果按照正常的执行模式的话,第一条sql是错的,那么会导致,zjp的钱数没有减少,wxd的钱数却增加了,如果真的是那样的话,我想我就发财了。弄两个账号一直转钱玩儿,哈哈哈哈(原谅我做梦了)
要实现这样的功能就需要使用mysqli的事务功能://mysqli的sql语句是自动提交的,所以先要关闭自动提交,这里才是关键 $mysqli->autocommit(FALSE); //编写SQL //zjp转出钱 $sql = "UPDATE account SET money=money-200 WHERE name='zjp1'"; $res = $mysqli->query($sql); $res_affect = $mysqli->affected_rows; //wxd收到钱 $sql1 = "UPDATE account SET money=money+200 WHERE name='wxd'"; $res1 = $mysqli->query($sql1); $res1_affect1 = $mysqli->affected_rows; //我要判断操作是否正确 if($res && $res_affect > 0 && $res1 && $res1_affect1) { //提交 $mysqli->commit() echo "转账成功,恭喜你少了200块钱"; //恢复mysqli的自动提交功能 $mysqli->autocommit(TRUE); }else { //进行回滚 $mysqli->rollback(); echo "转账失败,恭喜你保住了你的200块钱"; } //关闭连接 $mysqli->close();
这样就实现了简单的一个事务。
-
mysqli扩展库
2019-05-11 17:01:17mysqli使用解析 通过mysqli类库操作数据库的步骤 建立到mysql的连接 打开指定的数据库 设置默认客户端的字符集 执行sql语句 释放结果集 关闭连接 建立连接的同时打开指定数据库 <?php //1.建立到mysql的连接,...mysqli使用解析
通过mysqli类库操作数据库的步骤
- 建立到mysql的连接
- 打开指定的数据库
- 设置默认客户端的字符集
- 执行sql语句
- 释放结果集
- 关闭连接
建立连接的同时打开指定数据库
<?php //1.建立到mysql的连接,同时打开指定的数据库 $msyqli = @new mysqli('localhost','root','root','test'); //$mysqli->connect_errno:得到连接产生的错误编号 //$mysqli->connect_error:得到连接产生的错误信息 if($mysqli->connect_errno) { die('Connect Error :'.$mysqli->connect_error); } echo '<hr color="red">'; echo '客户端的信息:'.$mysqli->client_info.'<br />'; echo $mysqli->get_client_info().'<br />'; echo '客户端的版本:'.$mysqli->client_version.'<br />'; echo '<hr />'; echo '服务器端信息:'.$mysqli->server_info.'<br />'; echo $mysqli->get_server_info(); echo '<hr />'; echo '服务器版本:'.$mysqli->server_version.'<br />'; echo '<hr />' //2.设置默认的客户端编码方式utf8 $mysqli->set_charset('utf8'); //3.执行sql查询 $sql = <<<EOF CREATE TABLE IF NOT EXISTS mysqli( id TINYINT UNSIGNED AUTO_INCREMENT KEY, username VARCHAR(20) NOT NULL ); EOF; /* SELECT/DESC/DESCRIBE/SHOW/EXPLAIN执行成功返回结果集对象,失败返回false 对于其它sql语句的执行,执行成功返回true,否则返回false */ //4.释放结果集(这里没有,省略) //5.关闭连接 $mysqli->close(); ?>
实现插入记录操作
<?php header('content-type:text/html;charset=UTF-8'); $mysqli = @new mysqli('localhost','root','root','test'); if($mysqli->connect_errno) { die('CONNECT ERROR:'.$mysqli->connect_error); } $mysqli->set_charset('utf8'); //执行sql查询 //添加记录,执行单条sql语句 $sql = "INSERT INTO user (username,password) VALUES('queen1','queen1'),(queen2,queen2),(queen3,queen3);"; $res= $mysqli->query($sql); if($res) { //得到上一步插入操作产生的AUTO_INCREMENT的值 echo '恭喜您注册成功,你是网站的第'.$mysqli->insert_id.'位用户<br />'; //得到上一步操作产生的受影响记录条数 echo '有'.$mysqli->affected_rows.'条记录受影响'; } else { echo 'ERROR '.$mysqli->errno.':'.$mysqli->error; } $mysqli->close(); ?>
实现更新记录操作
<?php header('content-type:test/html;charset=UTF-8'); $mysqli = new mysqli('localhost','root','root','test'); if($mysqli->connect_errno) { exit('CONNECT ERROR:'.$mysqli->connect_error); } $mysqli->set_charset('utf8'); //更新数据 $sql = "UPDATE user SET age += 10"; $res = $mysqli->query($sql); if($res) { echo $mysqli->affected_rows.'条记录被更新'; } else { echo 'ERROR '.$mysqli->errno.':'.$mysqli->error; } $mysqli->close(); ?>
实现删除记录操作
<?php header('content-type:text/html;charset=utf-8'); $mysqli= new mysqli('localhost','root','root','test'); if($mysqli->connect_errno) { exit('CONNECT ERROR:'.$mysqli->connect_error) } $mysqli->set_charset('utf8'); //删除用户 $sql = "DELETE FROM user WHERE id <= 6"; $res = $mysqli->query($sql); if($res) { echo $mysqli->affected_rows.'条记录被删除'; } else { echo 'ERROR '.$mysqli->errno.':'.$mysqli->error; } $mysqli->close(); ?>
注意:
affected_rows的值为三种:- 受影响记录条数
- -1,代表sql语句有问题
- 0,代表没有受影响记录的条数
实现查询记录的操作
<?php header('content-type:text/html;charset=utf-8'); $mysqli = new mysqli('localhost','root','root','test'); if($mysqli->connect_errno) { exit('CONNECT ERROR:'.$mysqli->connect_error); } $mysqli->set_charset('utf8'); //查询 $sql = "SELECT id,username,age FROM user"; $mysqli_result = $mysqli->query($sql); if($mysqli_result && $mysqli_result->num_rows>0) { $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();//取得结果集中一条记录作为索引数组返回 $row = $mysqli_result->fetch_assoc();//取得结果集中的一条记录作为关联数组返回 $row = $mysqli_result->fetch_array(); $row = $mysqli_result->fetch_array(MYSQLI_ASSOC); $row = $mysqli_result->fetch_object(); //移动结果集内部指针 $mysqli_result->data_seek(0); $row = $mysqli->fetch_assoc(); while($row = $mysqli->fetch-assoc()) { $rows[] = $row; } $mysqli_result->free(); } else { echo '查询错误或者结果集中没有记录'; } $mysqli->close(); ?>
mysqli针对多条sql语句的执行
<?php header('content-type:text/html;charset=utf-8'); $mysqli = new mysqli('localhost','root','root','test'); if($mysqli->connect_errno) { exit('CONNECT ERROR:'.$mysqli->connect_error); } $mysqli->set_charset('utf8'); $sql = "INSERT INTO user(username,password,age) VALUES('yangzichao','yangzichao',20)"; $sql .= "UPDATE user SET age = 5 WHERE id = 28"; $sql .= "DELETE FROM user WHERE id = 25"; $res = $mysqli->multi_query($sql); if($res) { echo $res->affected_rows.'条记录被删除'; } else { echo 'Error '.$mysqli->errno.':'.$mysqli->error; } $mysqli->close(); ?>
<?php header('content-type:text/html;charset=UTF-8'); $mysqli = new mysqli('localhost','root','root','test'); if($mysqli->connect_errno) { exit('CONNECT ERROR:'.$mysqli->connect_error); } $mysqli->set_charset("utf8"); $sql = "select id,username,age from user;"; $sql .= "select * from mysql.user"; //use_result()/store_result():获取第一条查询产生的结果集 //more_results():检测是否有更多的结果集 //next_result():将结果集指针向下移动一位 if($mysqli->multi_query($sql)) { do { if($mysqil_result = $mysqli->store_result()) { $rows[] = $mysqli_result->fetch_all(MYSQLI_ASSOC); } } while($mysqli->more_results() && $mysqli->next_result()); } else { echo '查询失败:'.$mysqli->error; } var_dump($rows); $mysqli->close(); ?>
使用预处理语句执行插入操作
<?php header('content-type:text/html;charset=utf-8'); $mysqli = @new mysqli('localhost','root','root','test'); if($mysqli->connect_errno) { exit('CONNECT ERROR;'.$mysqli->connect_error); } $mysqli->set_charset('utf8'); $sql = "insert user(username,password,age) values (?,?,?);"; //准备预处理语句 $mysqli_stmt = $mysqli->prepare($sql); $username = 'king'; $password = mad5('king'); $age = 12; //绑定参数 $mysqli_stmt->bind_param('ssi',$username,$password,$age); //执行预处理语句 if($mysqli_stmt->execute()) { echo $mysqli_stmt->insert_id; echo '<br />'; } else { echo $mysqli_stmt->error; } ?>
使用预处理语句防止sql注入
<?php header('content-type:text/html;charset=utf-8'); $mysqli = new mysqli('localhost','root','root','test'); if($mysqli->connect_errno) { echo 'CONNECT ERROR:'.$mysqli->connect_error; } $mysqli->set_charset('utf8'); $sql = "select * from user where username = ? and password = ?;"; $mysqli_stmt = $msyqli->prepare($sql); $username = $_POST['username']; $password = md5($_POST['password']); $mysqli_stmt->bind_param('ss',$username,$password); if($mysqli_stmt->execute()) { $mysqli_stmt->store_result(); if($mysqli_stmt->num_rows > 0) { echo '登陆成功!'; } else { echo '登陆失败!'; } } ?>
使用预处理语句执行查询操作
<?php header('content-type:text/html;charset=utf-8'); $mysqli = new mysqli('localhost','root','root','test'); if($mysqli->connect_errno) { exit('CONNECT ERROR:'.$mysqli->connect_error); } $mysqli->set_charset('utf8'); $sql = "select id,username,age from user where id>=?"; $mysqli_stmt = $mysqli->prepare($sql); $id = 20; $mysqli_stmt->bind_param('i',$id); if($mysqli_stmt->execute()) { //bind_result():绑定结果集中的值到变量 $mysqli_stmt->bind_result($id,$username,$age); //遍历结果集 while($mysqli_stmt->fetch()) { echo '编号:'.$id.'<br />'; echo '用户名:'.$username.'<br />'; echo '年龄:'.$age.'<br />'; echo '<hr />'; } } else { echo '查询错误:'.$mysqli_stmt->error; } $mysqli_stmt->free(); $mysqli->close(); ?>
-
MySQLi扩展库来袭—课程源代码
2018-06-19 13:08:44MySQLi扩展库来袭—课程源代码 MySQLi扩展库来袭—课程源代码 -
PHP mysqli扩展库 预处理技术的使用分析
2020-12-15 07:20:551、使用mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户 代码如下:<?php //mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户 //1、创建mysqli对象 $mysqli = new MySQLi(“localhost”,”... -
mysql扩展库和mysqli扩展库的比较
2015-08-26 11:17:34 mysql扩展库和mysqli扩展库的比较 1.mysqli的稳定性和安全性,效率有所提高 2.mysqli支持面向对象编程 同时mysqli扩展库考虑到php老程序员 也提供了面向过程的编程风格mysql扩展库和mysqli扩展库的比较
1.mysqli的稳定性和安全性,效率有所提高
2.mysqli支持面向对象编程 同时mysqli扩展库考虑到php老程序员 也提供了面向过程的编程风格 -
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2021-01-21 16:15:30mysqli扩展库是MySQL扩展库的改进版本,在mysql扩展库的基础上提高了稳定性和效率,mysqli扩展库有两套东西,一套就是面向过程的mysqli另一套是面向对象的mysqli。操作方式大体和mysql扩展库大体一致,这次还是先... -
解析在PHP中使用mysqli扩展库对mysql的操作
2020-10-27 03:38:46本篇文章是对在PHP中使用mysqli扩展库对mysql的操作进行了详细的分析介绍,需要的朋友参考下 -
mysqli扩展是mysql扩展的增强版_php--mysqli扩展库之增、删、改、查
2021-02-02 19:44:53/**************************mysqli扩展库********************************//*使用php mysqli扩展操作mysql数据库,是mysql扩展库的增强版,效率、安全有所提高,支持面向对象编程同时也提供了面向过程的编程风格★.../**************************mysqli扩展库********************************/
/*使用php mysqli扩展操作mysql数据库,是mysql扩展库的增强版,效率、安全有所提高,支持面向对象编程
同时也提供了面向过程的编程风格
★mysql语句的特别说明:如果操作的字段类型是字符串型则要求要使用单引号包起来,如果操作的字段类型是数值型的则可以用单引号包也可以不用★
*/
/*
//查询
//面向对象风格 1.创建mysqli对象 2.操作数据库 3.处理结果 4.关闭资源
//1.创建对象
$mysqli=new mysqli("127.0.0.1","root","hfcc551","test");
//验证是否连接
if($mysqli->connect_error)
{
die("连接失败!".$mysqli->connect_error);
}
//2.操作数据库(发送sql指令)
$sql="select * from user";
$res=$mysqli->query($sql);//$res是结果集
//3.处理结果
while($row=$res->fetch_row())
{
foreach($row as $k=>$v)
{
echo "--".$v;
}
echo "
";}
//4.关闭资源
$res->free();//释放内存
$mysqli->close();//关闭连接
*/
//增、删、改
$mysqli=new mysqli("127.0.0.1","root","hfcc551","test");
if($mysqli->connect_error)
{
die("连接失败!".$mysqli->connect_error);
}
//$sql="insert into user (name,password,age) values ('刘一',md5('sf123456'),57)";//添加一条记录
//$sql="delete from user where id=17";//删除一条记录
$sql="update user set name='小苏' where id=18";//修改一条数据
$b=$mysqli->query($sql);//$b是布尔值
if(!$b)
{
echo "失败!".$mysqli->error;
}
else
{
//看看有多少行记录受影响
if($mysqli->affected_rows>0)
{
echo "成功!";
}
else
{
echo "没有行数受影响";
}
}
$mysqli->close();//没有资源可以关闭因为$b是布尔类型值 所以关闭连接即可
-
mysql编程扩展_php数据库编程---mysqli扩展库
2021-01-25 13:58:031,mysqli扩展库允许我们访问MySQL数据库,并对MySql数据库进行curd操作。Mysqli扩展库比mysql扩展库加强了。2,mysqli扩展库和mysql扩展库的比较(1)mysql是非持继连接函数而mysqli是永远连接函数。也就是说 mysql... -
54. mysqli 扩展库
2015-11-07 16:44:57在 php.ini 总启用 mysqli扩展库: extension = php_mysqli.dll<?php header('Content-Type:text/html;charset=utf8'); //mysqli 操作 mysql 数据库(面向对象风格)//1.创建MySQLi对象$mysqli = new MySQLi('... -
Mysqli扩展库的总结
2017-06-13 23:09:58一.Mysqli概念 ... mysql是非持续链接数据库,mysql每次链接都会打开一个链接的进程 mysqli是永久链接函数,多次运行mysqli将使用同一链接进程,从而减少服务器的开销 ...1.使用Mysqli,需要加载Mysqli扩展库,请确定 -
mysqli扩展库操作mysql数据库
2016-09-28 22:20:00配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll ...详见博客 “mysql扩展库操作mysql数据库” ... 2 //mysqli扩展库操作mysql数据库,面向对象 3 $mysqli=new MySQLi("localhost",... -
使用mysqli扩展库 预处理技术 mysqli stmt
2014-12-30 17:06:371、使用mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户 //mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户 //1、创建mysqli对象 $mysqli = new MySQLi("localhost","root","root","test")... -
【小结】有关mysql扩展库和mysqli扩展库的crud操作封装
2016-05-28 00:22:002、mysqli扩展库 面向对象操作和面向过程操作并存 安全性和效率高于mysql扩展库 3、PDO扩展库 面向对象操作 今天这篇博文主要要谈谈mysql扩展库和mysqli扩展库 主要是记录了着2套crud操作分装 以下代码段是关于... -
php mysqli扩展库之预处理操作
2013-09-10 21:01:00php mysqli扩展库之预处理操作 分享下php使用mysqli扩展库进行预处理操作的二个例子,有意研究mysqli用法...例1、使用mysqli扩展库的预处理技术 mysqli stmt 向数据库添加3个用户 01... -
mysqli扩展库增强①批量执行SQL语句
2018-01-02 21:18:55mysqli扩展库增强①批量执行SQL语句 -
PHP mysqli扩展库-面向对象1
2013-12-30 20:48:31mysqli扩展库-面向对象1" TITLE="PHP mysqli扩展库-面向对象1" /> mysqli扩展库-面向对象1" TITLE="PHP mysqli扩展库-面向对象1" /> 首先需要在php.ini当中启用如下配置。 mysqli扩展库-面向对象1" TITLE="PHP ... -
php mysqli扩展库的使用
2016-09-07 15:09:39php mysqli扩展库的使用数据库结构 1.连接数据库 $hostname = 'localhost'; //主机名 $dbname = 'yian'; //数据库名 $username = 'root'; //用户名 $psw = 'root'; //用户密码 $charset = 'utf_8'; //mysql... -
php预编译mysql扩展_PHP mysqli扩展库 预处理技术的使用分析
2021-01-20 04:04:01//mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户//1、创建mysqli对象$mysqli = new MySQLi("localhost","root","root","test");if($mysqli->connect_error){die($mysqli->conncet_error);}//2、... -
php使用mysqli扩展库完成对mysql操作的案例
2018-05-28 21:25:43编写一个程序,从表中读取数据,打印在网页中1、环境搭建(php、mysql、apache)2、启用mysqli扩展库1、在php.ini文件中去配置mysqli扩展库。 找到php_mysqli.dll,取消前面的注释 ;extension=php_imap.dll ;... -
使用php的mysqli扩展库操作mysql数据库
2016-09-21 09:29:00mysql扩展库和mysqli扩展库的区别 1.mysqli的稳定性 安全性 和 执行效率有所提高 2.mysqli支持面向对象编程,同时mysqli也考虑到老php程序员,提供了面向过程的编程风格。 mysqli的快速入门案例: 编写一个程序... -
mysqli扩展库增强-预处理mysqli_stmt批量输入
2015-02-03 16:21:40//mysqli扩展库增强-预处理mysqli_stmt //1、创建mysql对象 $mysqli=new mysqli("127.0.0.1","root","password","testdb"); //验证是否连接成功 if($mysqli->connect_error){ die("连接失败".$mysqli->... -
PHP使用mysqli扩展库实现增删改查(面向对象版)
2016-09-21 09:47:36mysqli扩展库是MySQL扩展库的改进版本,在mysql扩展库的基础上提高了稳定性和效率,mysqli扩展库有两套东西,一套就是面向过程的mysqli另一套是面向对象的mysqli。操作方式大体和mysql扩展库大体一致,这次还是先...
-
一天学完MySQL数据库
-
iptables 企业级防火墙配置(四表五链)
-
自适应极限学习机
-
WLAN中共存的802.11a / n和802.11ac客户端:优化和区分
-
使用内置传感器的LED进行LED热阻和TIM评估的研究
-
结合使用电纺丝和微成型来调节雪旺氏细胞行为,制备取向聚己内酯支架
-
通过有源射频锁相实现稳定的光纤时间传输
-
生成、添加用于操作多个 Git 账户的 SSH 公钥配置
-
小程序的全栈开发新时代
-
ASP.NET学习——用户增删改查(三层,数据库+源码)
-
常用的分布式事务解决方案
-
射影级双缝光子晶体光机腔设计
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
leetcode算法第5题
-
【CTF资料-0x0002】简易Linux堆利用入门教程by arttnba3
-
STM32F373XXDataSheet.zip
-
spark大数据分析与实战
-
支付宝架构师眼里的高可用与容灾架构演进
-
阿里集团八年容器化演进之路
-
ApacheFlink漫谈系列-概述