博客列表 >数据库基本知识、PDO对象、预处理对象与数据绑定(数据库原理、数据表结构、数据库操作、PDO连接数据库、预处理对象、参数绑定)2019年2月22日22时

数据库基本知识、PDO对象、预处理对象与数据绑定(数据库原理、数据表结构、数据库操作、PDO连接数据库、预处理对象、参数绑定)2019年2月22日22时

小明的博客
小明的博客原创
2019年03月08日 16:34:51846浏览

今天主要学习了数据库基本知识、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)成对出现。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议