数据访问与全局变量

数据访问

方式:函数方式(过时);面向对象方式(常用);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}";

原文地址:https://www.cnblogs.com/Whitehat/p/8451849.html