【PHP】利用PDO、MYSQLI进行数据库访问

如果你喜欢小老弟的这篇文章,那么就请关注并转发完成知识的传递!

1. PDO和MySQLi

PDO和MySQLi都是PHP中对数据库进行访问的方式。PDO是PHP数据对象,是一种轻量型的封装,较MySQLi更容易理解。两种方法各有不同,以下是两个具体的使用示例。

2. PDO登陆实例

<?php
    
    // 用户类定义
    class User {

        private $username;
        private $password;

        public function __construct($username, $password) {
            $this->username = $username;
            $this->password = $password;
        }
        
        public function print() {
            echo 'username: '.$this->username;
            echo '<br>';
            echo 'password: '.$this->password;
        }
    
    }
    
    $username = '';
    $password = '';
    
    if(isset($_GET['username'])) {
        $username = $_GET['username'];
    }

    if(isset($_GET['password'])) {
        $password = $_GET['password'];
    }
    
    try {

         // 创建PDO对象
         $pdo = new PDO('mysql:host=127.0.0.1;dbname=db_88ys',
                        'huangwei',
                        '123456789');

         // 要执行的SQL语句,利用:param_name这种形式进行占位
         $sql = "select * from tb_user where 
                 username=:username and password=:password";
         
         // 预编译SQL,并指定参数以关联数组格式传入
         $statement = $pdo -> prepare($sql, 
            array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)
         );
        
         // 传入参数,并执行PDO Statement 对象
         $statement -> execute(array(':username' => $username,
                                     ':password' => $password));
        
         // 从PDO Statement对象中拉取结果
         $result = $statement -> fetchAll();
        
         // 对结果进行判断,如果结果集中无数据,则登陆失败
         if(count($result) == 0) {
            echo "login failed"."<br>";
         } else {
            $user = new User($result[0]['username'], $result[0]['password']);
            echo "<br>login success: <br>";
            echo $user -> print();
         }
    } catch(PDOException $e) {
        echo "Error: ".$e->getMessage()."<br>";
    }
                           
    
?>

3. MySQLi

<?php 

	$mysqli = new mysqli('127.0.0.1', 'huangwei', '123456789', 'db_88ys');

	if($mysqli -> connect_errno) {
		echo "Connected Failed : ".connect_error;
		exit();
	}

	if (isset($_GET['count'])) {
		$count = $_GET['count'];
		$result = $mysqli -> query("select id, name, href from tb_movie limit $count", MYSQLI_USE_RESULT);
		for($i = 0; $i < $count; $i++) {
			$movies = mysqli_fetch_assoc($result);
			var_dump($movies);
		}
	}

	if (isset($_POST['count'])) {
		$count = $_POST['count'];
		$result = $mysqli -> query("select id, name, href from tb_movie limit $count", MYSQLI_USE_RESULT);
		for($i = 0; $i < $count; $i++) {
			$movies = mysqli_fetch_assoc($result);
			var_dump($movies);
		}
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章