<?php /医院 * 配置数据库连接参数 */ define ('DB_HOST', 'localhost'); define ('DB_USER', 'root'); define ('DB_PASS', '123456'); define ('DB_NAME', 'php'); define ('DB_CHAR', 'utf8');
点击 "运行实例" 按钮查看在线实例
数据库连接的步骤
<?php //1.导入数据库连接参数 require 'mysqli_config.php'; //2.调用连接函数,成功则返回mysqli对象,失败返回false $db = mysqli_connect(DB_HOST,DB_USER,DB_PASS); //var_dump($db); //3.测试连接是否成功 //连接失败一定会返回错误编码,可以根据编号判断,也可用$db是否为false进行判断 if (mysqli_connect_errno($db)){ exit('连接失败'.mysqli_stmt_error($db)); } echo '<h1>连接成功!</h1>'; //4.选择要操作的数据库 mysqli_select_db($db,DB_NAME); //5.设置默认字符集 mysqli_set_charset($db,DB_CHAR);
点击 "运行实例" 按钮查看在线实例
mysqli数据库连接简化版
<?php //1.导入数据库连接参数 require 'mysqli_config.php'; //2. 调用连接函数,返回连接资源 $db = @mysqli_connect(DB_HOST, DB_USER, DB_PASS,DB_NAME) or die('连接失败'.mysqli_connect_error($db)); //3. 设置默认字符集 mysqli_set_charset($db, DB_CHAR);
点击 "运行实例" 按钮查看在线实例
执行查询
数据库的查询:不仅仅包括查询,还包括新增,更新与删除操作,即读写操作,或者访问操作
mysqli_query($bd,$sql):执行SQL语句
mysqli_errno($db):返回最后一次函数执行的错误代码
mysqli_error($db):返回最后一次函数执行的错误信息
mysqli_close($db):关闭当前的数据连接
<?php //1.连接数据库,require 不是函数,后面不用加括号 require 'mysqli_connect.php'; //2.执行查询, if ($res = mysqli_query($db,"SELECT name,salary FROM staff")){ while ($row = mysqli_fetch_assoc($res)){ //输出或返回一个变量的字符串表示 var_export($row); print '<hr>'; } }else{ exit('查询失败'.mysqli_errno($db).':'.mysqli_error($db)); } //释放结果集 mysqli_free_result($res); //关闭数据库连接 mysqli_close($db);
点击 "运行实例" 按钮查看在线实例
更为详细的查询步骤
<?php //1.连接数据库,require 不是函数,后面不用加括号 require 'mysqli_connect.php'; //2.准备SQL语句 $sql = "SELECT name,salary FROM staff"; //3.执行查询:成功会返回结果集对象,失败返回false $result = mysqli_query($db,$sql); //4.检测结果 if(false != $result){ if(mysqli_num_rows($result)>0){//如果结果集中存在记录,至少有一条, 此命令仅对select语句有效 //要取得被 INSERT,UPDATE 或者 DELETE 查询所影响到的行的数目,用 mysql_affected_rows()。 echo '共计:'.mysqli_affected_rows($db).'条记录~~<br>' ; //处理结果集 //以对象的方式 while($row=mysqli_fetch_object($result)){ echo $row->name.'--'.$row->salary; echo '<hr>'; } } else { echo '没有符合条件的记录'; } }else { //必须要用exit()或die()终止脚本执行,否则后面的语句还会执行并会报错 exit('查询失败'.mysqli_errno($db).':'.mysqli_error($db)); } //5.释放结果集(仅针对select) mysqli_free_result($result); //6.关闭数据库连接 mysqli_close($db);
点击 "运行实例" 按钮查看在线实例
向数据表中新增数据
<?php //1.连接数据库 require 'mysqli_connect.php'; //2.准备SQL $sql = "INSERT INFO staff (name,sex,age,salary) VALUES ('小昭',1,20,2400),('宋青书',0,40,1800),('成昆',0,70,9000)"; //3.执行查询:成功返回true,失败返回false if(mysqli_query($db,$sql)){ if(mysqli_affected_rows($db)>0){ //返回受影响的记录数与新增主键id echo '成功新增了'.mysqli_affected_rows($db).'条记录,’<br>’新记录的主键id是:'.mysqli_insert_id($db); } }else { //项目上线后,不应该将出错信息显示出来,否则会暴露数据库的相关信息 exit(mysqli_errno($db).':'.mysqli_error($db)); }
点击 "运行实例" 按钮查看在线实例
删除数据表中的数据
<?php //1.连接数据库 require 'mysqli_connect.php'; //2.准备sql语句 $sql = "DELETE FROM staff WHERE staff_id = 12"; //3.执行查询:成功返回true,失败返回false if (mysqli_query($db, $sql)) { if (mysqli_affected_rows($db) > 0) { //返回受影响的记录数 echo '成功的删除了'.mysqli_affected_rows($db).'条记录'; } else { echo '没有记录被删除'; } } else { exit(mysqli_errno($db).':'.mysqli_error($db)); } //4.关闭连接 mysqli_close($db);
点击 "运行实例" 按钮查看在线实例
更新数据表中的数据
//1.连接数据库 require 'mysqli_connect.php'; //2.准备sql语句 $sql = "UPDATE staff SET salary WHERE staff_id=2"; //3.执行查询:成功返回true,失败返回false if (mysqli_query($db, $sql)) { if (mysqli_affected_rows($db) > 0) { //返回受影响的记录数 echo '成功的更新了'.mysqli_affected_rows($db).'条记录'; } else { echo '没有记录被更新'; } } else { exit(mysqli_errno($db).':'.mysqli_error($db)); } //4.关闭连接 mysqli_close($db);
点击 "运行实例" 按钮查看在线实例
多语句执行与多结果集处理技术
<?php /* 涉及的函数 mysqli_multi_query($db,$sql):执行多个查询语句 mysqli_store_result($db):获取最后一次查询结果产生的结果集 mysqli_more_results($db):检测多次查询是否还是更多的结果集,返回布尔值 mysqli_next_result($db):从多结果集中采取下一结果集 */ /* mysqli_multi_query 与 mysqli_query 不同,查询成功并不返回结果集 而是返回true,失败返回false 多语句查询的当前结果集要用mysqli_store_result来获取成功返回的结果集对象,失败返回false mysqli_more_results判断多语句车讯结果中是够还存在更多的结果集,如果有返回true,否则返回false mysqli_next_result取出下一个结果集,成功返回true,失败返回false */ //1.连接数据库 require 'mysqli_connect.php'; //2.准备多条查询课程,每条语句之间必须引用字符串连接 $sql = "SELECT sex,ROUND(AVG(salary),2) FROM staff GROUP BY sex"; $sql .= "SELECT name,age FROM staff WHERE age>50;"; $sql .= "SELECT name,salary FROM staff WHERE salary<5000"; $num = 1; if (mysqli_multi_query($db,$sql)){ echo '第'.$num.'个结果子集中的数据:<br>'; //如果获取到了当前结果子集,则遍历当前的结果子集中的数据 while($result = mysqli_store_result($db)){ //如果当前结果子集中存在满足条件的记录的话,就进行输出 if (mysqli_affected_rows($db)>0){ //循环遍历结果子集中的每一条记录,解析到一维数组中 while($row=mysqli_fetch_assoc($result)){ print_r($row);//打印输出 echo '<br>'; } mysqli_free_result($result); }else{ echo '当前结果集中没有满足条件的数据~'; } if (mysqli_more_results($db)){ $num++; echo '<hr color="red">第'.$num.'个结果子集中的数据:<br>'; mysqli_next_result($db); } } }else{ //查询失败,并给出错误编号与信息提示 exit(mysqli_errno($db).':'.mysqli_error($db)); } //4.释放当前的数据库连接 mysqli_close($db);
点击 "运行实例" 按钮查看在线实例