Blogger Information
Blog 42
fans 2
comment 0
visits 53984
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
数据库基本知识、PDO对象、预处理对象与数据绑定(数据库原理、数据表结构、数据库操作、PDO连接数据库、预处理对象、参数绑定)2019年2月22日22时
小明的博客
Original
848 people have browsed it

今天主要学习了数据库基本知识、PDO对象、预处理对象与数据绑定。

一、数据库基本知识

动态网站最大的特征就是从数据库动态获取数据,随着数据库的发展,我们现在用MYSQL这种关系型数据库,所谓“关系”,简单来说就是一张表,近似的就是一个二维数据。

数据库的结构。数据库由多张表格组成,单个数据表有多行记录组成,就绪表格的行,每条记录由多个字段组成,就像表格的列。

最常用的数据库操作是“curd”操作,即增删改查。

常用的sql命令Snipaste_2019-03-08_16-06-36.png

二、PDO对象

PDO对象就是PHP数据对象,他可以支持操作所有的数据库,这样就省去了写多种语言对应的sql语句的烦恼。

PDO连接数据库就是一个创建PDO对象的过程,他需要几个参数:

数据源,数据库的用户名、密码。连接数据代码如下:

实例

<?php
//    pdo操作
//    创建pdo连接  先设置连接参数
//    数据源
$dsn = 'mysql:host=127.0.0.1;dbname=php';
//    用户名
$user = 'root';
//    密码
$password = 'root';
//    创建pdo对象 连接数据库
//    try catch 可以捕获到连接过程中的错误
try {
    $pdo = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    exit('Conection Faild:' . $e->getMessage());
}
//    测试
var_dump($pdo);     //返回pdo对象
echo '<br>';
//    查询测试
$sql = 'SELECT `name`, `position` FROM `staff`';
foreach ($pdo->query($sql) as $row) {
    echo $row['name'] . '=>' . $row['position'] . '<br>';
}
//    关闭连接
$pdo = null;
var_dump($pdo);

运行实例 »

点击 "运行实例" 按钮查看在线实例

三、预处理对象

预处理的过程实际上就是对sql语句模板进行编译检查,缓存,提升运行效率,可以用占位符先建立sql模板,然后通过参数绑定进行数据处理。代码如下:

实例

<?php
//    预处理对象
//    建立连接
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root');
//    设置查询sql语句
$sql = 'SELECT * FROM `staff` WHERE `age` > 40 AND `sex` = 1';

//    获取准备对象
$stmt = $pdo->prepare($sql);

//    查看预处理对象
var_dump($stmt);
echo '<hr>';
//    查看生成sql的语句模板字符串
echo $stmt->queryString;
//    关闭连接
$pdo = null;

运行实例 »

点击 "运行实例" 按钮查看在线实例

四、参数绑定

bindvalue  是通过变量的赋值操作  bindp'aram变量引用  可以动态的进行参数绑定

代码如下:

实例

<?php
//    数据绑定的原理与应用场景

//    建立连接
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root');
//    sql语句模板  :id是占位符 通过后期数据绑定来设值
$sql = 'SELECT `id`,`name`,`position` FROM `staff` WHERE `id` = :id';
//    准备对象
$stmt = $pdo->prepare($sql);
//    参数绑定  有两种方法可用
//    bindValue  将一个变量的值绑定到参数上  可以绑定字面量 也可以绑定变量  是简单的值传递
$id = 1;
$stmt->bindValue('id', $id, PDO::PARAM_INT);

$stmt->bindParam('id', $id, PDO::PARAM_INT);
//    执行sql操作
$stmt->execute();
//    获取记录
//    fetch()  从结果集中获取一条记录  指针下移
//    PDO::FETCH_ASSOC 参数设置后就可以只获取关联数组
$result = $stmt->fetch(PDO::FETCH_ASSOC);
print_r($result);
echo '<hr>';
//    获取id为2 的记录
//    想要动态设置参数 只能用bindParam 他是传递引用
$id = 2;
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
print_r($result);

//    关闭连接
$pdo = null;

运行实例 »

点击 "运行实例" 按钮查看在线实例

五、查询操作

fetch适合单条操作

实例

<?php
//    连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root');
//    sql语句
$sql = 'SELECT `id`,`name`,`position` FROM `staff` WHERE `id` BETWEEN :start AND :stop';
//    获取准备对象
$stmt = $pdo->prepare($sql);
//    数据绑定
$start = 2;
$stop = 4;
$stmt->bindParam('start', $start, PDO::PARAM_INT);
$stmt->bindParam('stop', $stop, PDO::PARAM_INT);
//    执行sql语句
$stmt->execute();
//    获取结果集 遍历打印他
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo '<pre>', print_r($row,true);
}
//    关闭连接
$pdo = null;

运行实例 »

点击 "运行实例" 按钮查看在线实例

fetchAll适合获取结果列表

实例

<?php
//    连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root');
//    sql语句
$sql = 'SELECT `id`,`name`,`position` FROM `staff` WHERE `id` BETWEEN :start AND :stop';
//    获取准备对象
$stmt = $pdo->prepare($sql);
//    数据绑定  直接给execut传值
//    执行sql语句
$stmt->execute(['start'=>2, 'stop'=>4]);
//    fetchAll获取结果集 遍历打印他
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($rows as $row) {
    echo '<pre>', print_r($row, true);
}
//    关闭连接
$pdo = null;

运行实例 »

点击 "运行实例" 按钮查看在线实例

bindColumn()

实例

<?php
//    连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root');
//    sql语句
$sql = 'SELECT `id`,`name`,`position` FROM `staff` WHERE `id` BETWEEN :start AND :stop';
//    获取准备对象
$stmt = $pdo->prepare($sql);
//    数据绑定  直接给execut传值
//    执行sql语句
$stmt->execute(['start'=>2, 'stop'=>4]);
//    bindCloum将结果集中的列绑定给指定的变量
$stmt->bindColumn('id', $id, PDO::PARAM_INT);
$stmt->bindColumn('name', $name, PDO::PARAM_STR);
$stmt->bindColumn('position', $position, PDO::PARAM_STR);
//POD::FETCH_BOUND配合bindColumn  将结果集中列绑定给指定变量
while ($stmt->fetch(PDO::FETCH_BOUND)){
    echo 'id:', $id, 'name:', $name, 'position', $position, '<br>';
}
//    关闭连接
$pdo = null;

运行实例 »

点击 "运行实例" 按钮查看在线实例

总结:

1、数据库是php中的重中之重,他让让php数据交互,实现动态获取数据。

2、数据库的操作就是增删改查。

3、PDO可以实现操作多种数据库,实例化PDO对象实现数据连接,注意host默认参数可以连接,但为了效率还是要加上127.0.0.1;

4、预处理对象可以先建立模板,防止反复访问数据库,提前进行处理

5、通过在sql语句中设置占位符然后通过参数绑定来实现数据查询获取,bindParam能动态绑定

6、查询数据fetch  fetchAll  bindColumn都有各自的应用场景,bindColumn 与fetch(PDO::FETCH_BOUND)成对出现。

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments