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;
    }
    
    ?>
    

    .

  • 相关阅读:
    Python 学习日记 第七天
    Python 学习日记 第六天
    Python 学习日记 第五天
    Python 学习日记 第四天
    Redis 中的数据类型及基本操作
    Asp.net mvc 中View 的呈现(二)
    Asp.net mvc 中View的呈现(一)
    Asp.net mvc 中Action 方法的执行(三)
    Asp.net mvc 中Action 方法的执行(二)
    Asp.net mvc 中Action 方法的执行(一)
  • 原文地址:https://www.cnblogs.com/crazycode2/p/6927135.html
Copyright © 2011-2022 走看看