首先,如果想要使用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扩展开启失败';
}
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();
例如我有一个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();
这样就实现了简单的一个事务。