zoukankan      html  css  js  c++  java
  • mysqli

    一、验证MySQL扩展是否开启

    1.查看php信息

    <?php
    phpinfo();
    ?>
    

    2.检查扩展是否已经加载

    <?php
    var_dump(extension_loaded('mysqli'));
    ?>
    

    3.检查函数是否存在

    <?php
    var_dump(function_exists('mysqli_connect'));
    ?>
    

    4.得到当前已经开启的扩展

    <?php
    print_r(get_loaded_extensions());
    ?>
    

     二、连接数据库并获取客户端和服务器端的信息

    <?php
    // 设置页面编码格式
    header('content-type:text/html;charset=utf-8');
    // 1.建立到MySQL数据的连接
    // 方法一:实例化mysqli的类
    // 参数1:主机名,参数2:用户名,参数3:密码
    // $mysqli = new mysqli('localhost','root','');
    // // print_r($mysqli);
    // // 2.打开指定数据库
    // $mysqli->select_db('test');
    
    // 方法二:在实例化对象时不传任何值,通过connect()方法连接数据库时传值
    // $mysqli = new mysqli();
    // // 参数1:主机名,参数2:用户名,参数3:密码,参数4:数据库名称
    // $mysqli->connect('127.0.0.1','root','','test');
    // print_r($mysqli);
    
    // 建立连接的同时打开指定数据库
    // 参数1:主机名,参数2:用户名,参数3:密码,参数4:数据库名称
    // @:屏蔽系统报错提示
    $mysqli = @new mysqli('localhost','root','','test');
    // print_r($mysqli);
    // 判断如果有错误编号,结束程序
    // $mysql->connect_errno:得到连接产生的错误编号
    // $mysql->connect_error:得到连接产生的错误信息
    if($mysqli->connect_errno){
    	// connect_error 输出报错信息
    	die('Connect Error:'.$mysqli->connect_error);
    }
    // 打印所有$mysqli可调用的方法
    print_r($mysqli);
    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().'<br/>';
    echo '<hr/>';
    // 获取服务器端版本
    echo '服务器端版本:'.$mysqli->server_version.'<br/>';
    
    // 设置字符集
    $mysqli->set_charset('utf8');
    ?>
    

    三、小结

    <?php
    //1.建立到MySQL的连接
    $mysqli = @new mysqli('localhost','root','860128','test');
    // 判断是否存在错误编码
    if($mysqli->connect_errno){
    	die('Connect Error:'.$mysqli->connect_error);
    }
    // 2.设置默认的客户端编码方式utf8
    $mysqli->set_charset('utf8');
    
    // 3.执行SQL查询
    // 编写SQL语句(创建一个表单名为'mysqli',拥有两个字段->'id'、'username'的数据表)
    $sql=<<<EOF
    	CREATE TABLE IF NOT EXISTS mysqli(
    		id TINYINT UNSIGNED AUTO_INCREMENT KEY,
    		username VARCHAR(20) NOT NULL
    	);
    EOF;
    // 执行SQL语句
    $res=$mysqli->query($sql);
    var_dump($res);
    
    /**
    * SELECT/DESC/DESCRIBE/SHOW/EXPLAIN执行成功返回mysqli_result对象,执行失败返回false
    * 对于其它SQL语句的执行,执行成功返回true,否则返回false
    */
    
    // 关闭连接
    $mysqli->close();
    ?>

    四、数据库操作

    1.插入数据(insert)

    2.更新数据(updata)

    3.删除数据(delete)

    <?php
    // 设置编码格式
    header('content-type:text/html;charset=utf-8');
    $mysqli = new mysqli('localhost','root','860128','test');
    // 检查数据库是否连接成功
    if($mysqli->connect_errno){
    	die('Connect Error:'.$mysqli->connect_error);
    }
    // 设置字符集
    $mysqli->set_charset('utf8');
    
    // 创建user表单(此代码应该写在初始程序中,此处添加防止报错)
    $sql=<<<EOF
    	CREATE TABLE IF NOT EXISTS user(
    		id TINYINT UNSIGNED AUTO_INCREMENT KEY,
    		username VARCHAR(20) NOT NULL,
    		password VARCHAR(20) NOT NULL,
    		age TINYINT UNSIGNED
    	);
    EOF;
    // 执行SQL语句
    $mysqli->query($sql);
    
    // 执行SQL查询
    // 添加记录
    // 执行单条SQL语句
    // 编写SQL语句
    // $sql="INSERT user(username,password) VALUES('king','king');";
    // 删除user数据表
    // $sql.="DROP TABLE user;";
    $sql="INSERT user(username,password) VALUES('queen1','queen1'),('queen2','queen2'),('queen3','queen3'),('queen4','queen4')";
    // 执行SQL语句
    $res=$mysqli->query($sql);
    // 判断是否插入成功
    if($res){
    	// 得到上一步插入操作产生的AUTO_INCREMENT的值
    	echo '恭喜您注册成功,您是网站第'.$mysqli->insert_id.'位用户<br/>';
    	// 得到上一步操作产生的受影响记录条数
    	echo '有'.$mysqli->affected_rows.'记录被影响';
    }else{
    	// 得到上一步操作产生的错误号和错误信息
    	echo 'ERROR'.$mysqli->errno.':'.$mysqli->error;
    }
    echo '<hr/>';
    
    // 修改数据
    // 将表中年龄+10
    $sql = "UPDATE user SET age=age+10";
    $res = $mysqli->query($sql);
    if($res){
    	echo $mysqli->affected_rows.'条记录被更新';
    }else{
    	echo "ERROR".$mysqli->errno.':'.$mysqli->error;
    }
    echo '<hr/>';
    // 删除数据
    // 将表中id<=6的用户删除掉(WHERE 后面是判断条件)
    $sql = "DELETE FROM user WHERE id<=6";
    $res = $mysqli->query($sql);
    if($res){
    	echo $mysqli->affected_rows.'条记录被删除';
    }else{
    	echo "ERROR".$mysqli->errno.':'.$mysqli->error;
    }
    
    /**
    * affected_rows值为3种:
    * 1.受影响的记录条数
    * 2.-1,代表SQL语句有问题
    * 3.0,代表没有受影响记录的条数
    */
    
    
    // 关闭到MySQL的连接
    $mysqli->close();
    ?>

    4.查询数据()

    <?php
    header('content-type:text/html;charset=utf-8');
    $mysqli = new mysqli('localhost','root','860128','test');
    if($mysqli->connect_errno){
    	die('数据库连接失败:'.$mysqli->connect_error);
    }
    $mysqli->set_charset('utf8');
    
    // 编写SQL语句
    $sql = "SELECT id,username,age FROM user";
    // 执行SQL语句,获得结果集对象
    $mysqli_result = $mysqli->query($sql);
    // var_dump($mysqli_result);
    // 判断结果集是否存在及结果集的数据条数
    if($mysqli_result && $mysqli_result->num_rows>0){
    	// echo $mysqli_result->num_rows;
    	// $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();
    	print_r($row);
    	echo '<hr/>';
    
    	// 取得结果集中的一条记录作为关联数组返回
    	$row = $mysqli_result->fetch_assoc();
    	print_r($row);
    	echo '<hr/>';
    
    	// 取得结果集中的一条记录同时返回索引数组和关联数组
    	$row = $mysqli_result->fetch_array();
    	print_r($row);
    	echo '<hr/>';
    
    	// 取得结果集中的一条记录,返回关联数组
    	$row = $mysqli_result->fetch_array(MYSQLI_ASSOC);
    	print_r($row);
    	echo '<hr/>';
    
    	// 返回结果集对象
    	$row = $mysqli_result->fetch_object();
    	print_r($row);
    	echo '<hr/>';
    
    	// 移动结果集内部指针
    	$mysqli_result->data_seek(0);
    	$row = $mysqli_result->fetch_assoc(); // 获得结果集返回的关联数组
    	print_r($row);
    
    	// 通过while循环,输出所有数据
    	while($row = $mysqli_result->fetch_assoc()){
    		// print_r($row);
    		// echo '<hr/>';
    		$rows[] = $row;
    	}
    
    	print_r($rows);
    
    	// 释放结果集
    	// $mysqli_result->close();
    	$mysqli_result->free();
    
    }else{
    	echo '查询错误或者结果集中没有记录';
    }
    
    // 关闭连接
    $mysqli->close();
    
    ?>
    

    五、针对多条SQL语句的查询

    <?php
    header('content-type:text/html;charset=utf-8');
    $mysqli = new mysqli('localhost','root','','test');
    if($mysqli->errno){
    	die('数据库连接失败:'.$mysqli->error);
    }
    $mysqli->set_charset('UTF8');
    $sql = "INSERT user(username,password,age) VALUES('root','root','32');";
    $sql .= "UPDATE user SET age=5 WHERE id=28;";
    $sql .= "DELETE FROM user WHERE id=25;";
    
    // 针对多条SQL语句的查询
    $res = $mysqli->multi_query($sql);
    
    var_dump($res);
    
    ?>
    
    <?php
    header('content-type:text/html;charset=utf-8');
    $mysqli = new mysqli('127.0.0.1','root','','test');
    if($mysqli->errno){
    	die('书记库连接失败:'.$mysqli->error);
    }
    // 设置字符集
    $mysqli->set_charset('UTF8');
    $sql = "SELECT id,username,age FROM user;";
    $sql .= "SELECT * FROM mysql.user;";
    $sql .= "SELECT CURRENT_USER();";  // 当前用户
    $sql .= "SELECT NOW();"; // 操作时间
    
    // use_result()//store_result():获取第一条查询产生的结果集
    // more_results():检测是否有更多的结果集
    // next_result():将结果集指针向下移动一位
    
    // multi_query() 可同时执行多条查询语句
    if($mysqli->multi_query($sql)){
    	// do while 循环
    	do{
    		if($mysqli_result = $mysqli->store_result()){
    			$rows[] = $mysqli_result->fetch_all(MYSQLI_ASSOC); // 输出关联数组
    		}
    	}while($mysqli->more_results() && $mysqli->next_result());
    }else{
    	// 输出报错信息
    	echo $mysqli->error;
    }
    print_r($rows);
    
    // 关闭连接
    $mysqli->close();
    
    ?>
    

    六、预处理语句

    <?php
    header('content-type:text/html;charset=utf-8');
    // $mysqli: mysql连接标识符
    $mysqli = new mysqli('localhost','root','','test');
    if($mysqli->errno){
    	die('数据库连接失败:'.$mysqli->error);
    }
    // 设置字符集
    $mysqli->set_charset('UTF8');
    // 编写SQL语句
    $sql = "INSERT user(username,password,age) VALUES(?,?,?)";
    // 准备预处理语句
    $mysqli_stmt = $mysqli->prepare($sql);
    // print_r($mysqli_stmt);
    $username = 'king';
    $password = md5('king');
    $age = 12;
    
    // 绑定参数
    $mysqli_stmt->bind_param('ssi',$username,$password,$age);
    
    // 执行预处理语句
    if($mysqli_stmt->execute()){
    	echo $mysqli_stmt->insert_id;
    	echo '<br/>';
    }else{
    	$mysqli_stmt->error;
    }
    
    $username = 'king1';
    $password = md5('king1');
    $age = 22;
    
    // 绑定参数
    $mysqli_stmt->bind_param('ssi',$username,$password,$age);
    
    // 执行预处理语句
    if($mysqli_stmt->execute()){
    	echo $mysqli_stmt->insert_id;
    	echo '<br/>';
    }else{
    	$mysqli_stmt->error;
    }
    
    $username = 'king2';
    $password = md5('king2');
    $age = 32;
    
    // 绑定参数
    $mysqli_stmt->bind_param('ssi',$username,$password,$age);
    
    // 执行预处理语句
    if($mysqli_stmt->execute()){
    	echo $mysqli_stmt->insert_id;
    	echo '<br/>';
    }else{
    	$mysqli_stmt->error;
    }
    
    ?>
    

    .

  • 相关阅读:
    时间日期总览
    Mysql一次更新多条数据
    windows远程桌面连接无法粘贴
    vmware workstation pro密钥
    C#自动生成XML文件
    Mysql 缺少MSVCR120DLL问题
    hdu 5672 Strings 模拟
    poj 1328 雷达覆盖 贪心
    hdu 5667 Sequence (矩阵快速幂)
    CodeForces 652D Nested Segments 树状数组
  • 原文地址:https://www.cnblogs.com/crazycode2/p/6927135.html
Copyright © 2011-2022 走看看