MySQLi扩展库

首先,如果想要使用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();

这样就实现了简单的一个事务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值