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