pdo_pgsql 接口
PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。
PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。
PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用,无法运行于之前的PHP版本。
PDO的运行机制,见下图
使用PDO的好处
常用函数
- PDO::query() 主要是用于有记录结果返回的操作,特别是SELECT操作。
- PDO::prepare 准备要执行的SQL语句并返回一个 PDOStatement 对象。
- PDO::exec() 主要是针对没有结果集合返回的操作,如INSERT、UPDATE等操作。
- PDO::lastInsertId() 返回上次插入操作,主键列类型是自增的最后的自增ID。
- PDOStatement::fetch() 是用来获取一条记录。
- PDOStatement::fetchAll() 是获取所有记录集。
示例代码
php_pdo_pgsql_conn.py
<?php header("content-type:text/html;charset=utf-8"); / //连接属性 $dbms='pgsql'; //数据库类型 $host='192.168.2.5'; //数据库主机名 $dbName='test'; //使用的数据库 $user='test'; //数据库连接用户名 $pass='test'; //对应的密码 $dsn="$dbms:host=$host;dbname=$dbName";
try { //初始化一个PDO对象 $pdo = new PDO($dsn, $user, $pass); //初始化一个PDO对象 echo "成功连接到数据库服务器!<br>";
} catch (PDOException $e) { die ("Error!: " . $e->getMessage() . "<br>"); }
// 预编译插入语句 $sql = 'INSERT INTO student(name, age, birthday) VALUES(:name, :age, :birthday)'; $stmt = $pdo->prepare($sql); // 绑定参数值 $name = 'tony'; $age=19; $birthday = '2020-06-01 20:11:11'; $stmt->bindValue(':name', $name); $stmt->bindValue(':age', $age); $stmt->bindValue(':birthday', $birthday); // 执行插入操作 $stmt->execute();
// 返回id $id = $pdo->lastInsertId('student_id_seq'); echo '插入数据成功,用户id:' . $id . '<br>'; // 绑定参数值 $name = 'david'; $age=23; $stmt->bindValue(':name', $name); $stmt->bindValue(':age', $age); $stmt->bindValue(':birthday', date("Y-m-d H:i:s")); // 执行插入操作 $stmt->execute(); // 返回id $id = $pdo->lastInsertId('student_id_seq'); echo '插入数据成功,用户id:' . $id . '<br>';
// 执行查询语句 $stmt = $pdo->query('SELECT * FROM student'); $students = []; while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $students[] = [ 'id' => $row['id'], 'name' => $row['name'], 'age' => $row['age'], 'birthday' => $row['birthday'] ]; } ?> <!DOCTYPE html> <html> <head> <style> table { font-family: arial, sans-serif; border-collapse: collapse; width: 100%; }
td, th { border: 1px solid #dddddd; text-align: left; padding: 8px; }
tr:nth-child(even) { background-color: #00bb00; } </style> <title>php_conn</title> </head> <body> <h2>学生列表</h2> <table> <thead> <tr> <th>ID</th> <th>Name</th> <th>Age</th> <th>Birthday</th> </tr> </thead> <tbody> <?php foreach ($students as $student) : ?> <tr> <td><?php echo htmlspecialchars($student['id']) ?></td> <td><?php echo htmlspecialchars($student['name']); ?></td> <td><?php echo htmlspecialchars($student['age']); ?></td> <td><?php echo htmlspecialchars($student['birthday']); ?></td> </tr> <?php endforeach; ?> </tbody> </table> </body> </html>
|
执行结果: