数据访问与全局变量
数据访问
方式:函数方式(过时);面向对象方式(常用);PDO方式(数据访问抽象层)(常用)
面向对象方式
//创建连接对象 变量 = new MySQLi("IP地址","数据库用户名","数据库密码","哪个数据库") $db = new MySQLi("localhost","root","123","mydb") //判断当前连接是否正确 if(mysqli_connect_error()){ //没有错误为空或false echo "连接失败"; exit; } //写一个sql语句 $sql = "select * from info"; //执行sql语句,如果成功返回一个结果集对象 $result = $db->query($sql); //失败是返回false,执行select,show,describe,explain查询会返回一个mysqli_result对象,其它查询返回true //读取查询结果 if($result){ //判断结果是不是false //1.从结果集对象里面读取所有数据,返回二维数组 $arr = $result->fetch_all(); //作为一个数组返回 //2..从结果集对象里面读取数据,每次读一条,返回一维数组(索引关联都有) $arr = $result->fetch_array(); //3.从结果集对象里面读取数据,每次读一条,返回一维数组(关联) $arr = $result->fetch_assoc(); //4.从结果集对象里面读取数据,每次读一条,返回一个对象 $arr = result->fetch_object(); //5..从结果集对象里面读取数据,每次读一条,返回一维数组(索引) $arr = result->fetch_row() while($arr = result->fetch_row()){ //当作fetch_all使用 var_dump($arr); } //需要哪一种就调用哪一个 }
示例
//删除示例 $db = new MySQLi("localhost","root","123","mydb"); mysqli_connect_error()?die("连接失败!"):""; //使用三目运算符 $sql = "delete from nation where code='n006'"; if($db->query($sql)){ echo "删除成功!"; }else{ echo "删除失败!"; }
<table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>代号</td> <td>名称</td> <td>性别</td> <td>民族</td> <td>生日</td> </tr> <?php $db = new MySQLi("localhost","root","123","mydb"); $sql = "select * from info"; $result = $db->query($sql); if($result){ $arr = $result->fetch_all(); foreach($arr as $v){ //foreach遍历显示 echo "<tr> <td>{$v[0]}</td> <td>{$v[1]}</td> <td>{$v[2]}</td> <td>{$v[3]}</td> <td>{$v[4]}</td> </tr>"; } } ?> </table>
全局变量
$name = "张三"; function test (){ $name = "李四"; //属于局部变量,作用域只在大括号里面,出了大括号就相当于访问不到 } test(); echo "姓名为{$name}";
解决方案
两种方法任意一种
关键字:global(把外层的一个变量当作全局变量拿到函数体中使用)
$name = "张三"; function test ($name){ //方法一可以把name传进去 global $name; //方法二把外层的name当作全局变量拿到函数里面来使用 $name = "李四"; } test(); echo "{$name}";