精华内容
下载资源
问答
  • 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:17
    mysqli使用解析 通过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扩展库来袭—课程源代码 MySQLi扩展库来袭—课程源代码
  • 1、使用mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户 代码如下:<?php  //mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户 //1、创建mysqli对象 $mysqli = new MySQLi(“localhost”,”...
  •  mysql扩展库和mysqli扩展库的比较 1.mysqli的稳定性和安全性,效率有所提高 2.mysqli支持面向对象编程 同时mysqli扩展库考虑到php老程序员 也提供了面向过程的编程风格
    
    mysql扩展库和mysqli扩展库的比较
    1.mysqli的稳定性和安全性,效率有所提高
    2.mysqli支持面向对象编程 同时mysqli扩展库考虑到php老程序员 也提供了面向过程的编程风格
    展开全文
  • mysqli扩展库是MySQL扩展库的改进版本,在mysql扩展库的基础上提高了稳定性和效率,mysqli扩展库有两套东西,一套就是面向过程的mysqli另一套是面向对象的mysqli。操作方式大体和mysql扩展库大体一致,这次还是先...
  • 本篇文章是对在PHP中使用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 扩展库
    这里写图片描述

    在 php.ini 总启用 mysqli扩展库:
    extension = php_mysqli.dll

    <?php
    header('Content-Type:text/html;charset=utf8');
    //mysqli 操作 mysql 数据库(面向对象风格)
    
    //1.创建MySQLi对象
    
    $mysqli = new MySQLi('localhost','root','123456','test');
    
    
    if($mysqli->connect_error){
        die("连接失败" . $mysqli->connect_error);
    }else{
        echo "连接成功";
    }
    
    //2.操作数据库(发送sql)
    
    $sql = "select * from user1";
    
    $result = $mysqli->query($sql);
    
    //3.处理结果
    
    while($row = $result->fetch_row()){
        foreach($row as $k=>$v){
            echo $v . "---";
        }
        echo "<br/>";
    }
    
    //4.释放资源
    $result->free();
    //5.关闭连接
    $mysqli->close();

    这里写图片描述
    这里写图片描述

    dml 操作:

    <?php
    header('Content-Type:text/html;charset=utf8');
    //mysqli 操作 mysql 数据库(面向对象风格)
    
    //1.创建MySQLi对象
    
    $mysqli = new MySQLi('localhost','root','123456','test');
    
    
    if($mysqli->connect_error){
        die("连接失败" . $mysqli->connect_error);
    }else{
        echo "连接成功";
    }
    
    //2.操作数据库(发送sql)
    
    $sql = "insert into user1 (name,password,email,age) values('小宏',md5('aaa'),'xiaohong@11.com',8)";
    
    //$sql = "delete from user1 where id=10";
    
    //$sql = "update user1 set age=50 where id=1";
    
    
    $result = $mysqli->query($sql);
    
    //3.处理结果
    
    if(!$result){
        echo "操作失败" . $mysqli->error;
    }else{
        //看看有多少行记录影响
        if($mysqli->affected_rows>0){
            echo "执行Ok";
        }else{
            echo "没有行受到影响";
        }
    }
    
    
    //5.关闭连接
    $mysqli->close();

    工具类:

    
    SqlHelper.php:
    
    <?php
    
    class SqlHelper
    {
        private $mysqli;
        private static $host="localhost";
        private static $user='root';
        private static $pwd='123456';
        private static $db='test';
    
        public function __construct()
        {
            $this->mysqli = new MySQLi(self::$host,self::$user,self::$pwd,self::$db);
            if($this->mysqli->connect_error){
                die('连接失败' . $this->mysqli->connect_error);
            }
            //设置访问数据库的字符集
            //这句话的作用是保证php是以utf8的方式来操作我们的数据库
            $this->mysqli->query("set names utf8");
        }
    
        public function execute_dql($sql)
        {
            $res = $this->mysqli->query($sql) or die("操作dql失败" . $this->mysqli->error);
            return $res;
        }
    
        public function execute_dml($sql)
        {
            $res = $this->mysqli->query($sql) or die("操作dql失败" . $this->mysqli->error);
            if(!$res){
                return 0;//表示失败
            }else{
                if($this->mysqli->affected_rows>0){
                    return 1;//执行成功
                }else{
                    return 2;//表示没有行受到影响
                }
            }
        }
    }
    <?php
    header('Content-Type:text/html;charset=utf8');
    
    
    require_once 'SqlHelper.php';
    
    $sqlHelper = new SqlHelper();
    
    $sql = "insert into user1 (name,password,email,age) values('小宏',md5('aaa'),'xiaohong@11.com',8)";
    
    $res = $sqlHelper->execute_dml($sql);
    var_dump($res);
    展开全文
  • Mysqli扩展库的总结

    2017-06-13 23:09:58
    一.Mysqli概念 ... mysql是非持续链接数据库,mysql每次链接都会打开一个链接的进程 mysqli是永久链接函数,多次运行mysqli将使用同一链接进程,从而减少服务器的开销 ...1.使用Mysqli,需要加载Mysqli扩展库,请确定
  • 配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll ...详见博客 “mysql扩展库操作mysql数据库” ... 2 //mysqli扩展库操作mysql数据库,面向对象 3 $mysqli=new MySQLi("localhost",...
  • 1、使用mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户 //mysqli扩展库 预处理技术 mysqli stmt 向数据库添加3个用户 //1、创建mysqli对象 $mysqli = new MySQLi("localhost","root","root","test")...
  • 2、mysqli扩展库 面向对象操作和面向过程操作并存 安全性和效率高于mysql扩展库 3、PDO扩展库 面向对象操作 今天这篇博文主要要谈谈mysql扩展库和mysqli扩展库 主要是记录了着2套crud操作分装 以下代码段是关于...
  • php mysqli扩展库之预处理操作 分享下php使用mysqli扩展库进行预处理操作的二个例子,有意研究mysqli用法...例1、使用mysqli扩展库的预处理技术 mysqli stmt 向数据库添加3个用户 01...
  • mysqli扩展库增强①批量执行SQL语句
  • mysqli扩展库-面向对象1" TITLE="PHP mysqli扩展库-面向对象1" /> mysqli扩展库-面向对象1" TITLE="PHP mysqli扩展库-面向对象1" /> 首先需要在php.ini当中启用如下配置。 mysqli扩展库-面向对象1" TITLE="PHP ...
  • php mysqli扩展库的使用

    2016-09-07 15:09:39
    php mysqli扩展库的使用数据库结构 1.连接数据库 $hostname = 'localhost'; //主机名 $dbname = 'yian'; //数据库名 $username = 'root'; //用户名 $psw = 'root'; //用户密码 $charset = 'utf_8'; //mysql...
  • 编写一个程序,从表中读取数据,打印在网页中1、环境搭建(php、mysql、apache)2、启用mysqli扩展库1、在php.ini文件中去配置mysqli扩展库。 找到php_mysqli.dll,取消前面的注释 ;extension=php_imap.dll ;...
  • mysql扩展库和mysqli扩展库的区别 1.mysqli的稳定性 安全性 和 执行效率有所提高 2.mysqli支持面向对象编程,同时mysqli也考虑到老php程序员,提供了面向过程的编程风格。 mysqli的快速入门案例: 编写一个程序...
  • //mysqli扩展库增强-预处理mysqli_stmt //1、创建mysql对象 $mysqli=new mysqli("127.0.0.1","root","password","testdb"); //验证是否连接成功 if($mysqli->connect_error){ die("连接失败".$mysqli->...
  • mysqli扩展库是MySQL扩展库的改进版本,在mysql扩展库的基础上提高了稳定性和效率,mysqli扩展库有两套东西,一套就是面向过程的mysqli另一套是面向对象的mysqli。操作方式大体和mysql扩展库大体一致,这次还是先...
  • 55. mysqli 扩展库(2)

    2015-11-08 13:17:44
    1. mysqli 扩展库批量执行 sql 语句 header('Content-Type:text/html;charset=utf8');//批量执行 dml 语句//1.得到 mysqli 对象$mysqli = new MySQLi('localhost','root','123456','test');if($mysqli->connect_...
  • PHP数据库编程④使用php的mysqli扩展库操作mysql数据库

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 313
精华内容 125
关键字:

mysqli扩展库

mysql 订阅