【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);
		}
	}


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