用户登录

为了安全,在执行 SQL 语句的时候,我们需要先去准备一条声明,然后在这个声明里,用一些点位符,比如要插入的更新的具体的数据,可以使用点位符,接着要去为这个点位符绑定具体的数据。最后再去执行一下。

下面,我们来看一个具体的例子。比如我们要往数据库的 posts 表里插入一条新的记录 ...

准备

先去准备一条 SQL 的声明 ... 先给这条声明起个名字 .. 这里就叫它 statement ... 等于 ... 准备一条 SQL 声明,要用的是 PDO 对象的 prepare 方法 ... 这个 PDO 对象就是在上面新创建的 $db_handle ... 调用它的 prepare 方法...

在这个方法里,可以去添加想要使用的 SQL 语句 ... 插入数据用的是 INSERT INTO ... 如果你想学一下使用 SQL 的语句去操纵数据库,可以去看看宁皓网的 《MySQL 基础》这个课程。

在这个 INSERT INTO 后面加上要插入数据的表的名字 ... 这里就是 posts ... 加上一个括号 ... 指定一下要插入数据的栏 ... 在 posts 表里面有三个栏,id title ... 还有 content,id 栏是自动增加的,所以不用管它 ... 在这里我们指定一下 title .... 还有 content ...

VALUES ... 括号 ... 这个括号里,就是跟前面的栏对应的具体的值 ... 注意,这里我们不能放要插入这两个栏里面的数据直接放在这儿 ... 因为这样做不安全 ... 会有 SQL 注入的风险 ...

所以,我们需要在这里,先用两个点位符来代替要插入的具体的数据 ...

这个占位符了可以有个名字 ... 如果不想命名这些点位符,可以直接都用一个 ? ... 这样,第一个 ? 号表示的就是 title 字段的值 ... 第二个 ? 号表示的就是要往 content 字段里面放的数据 ...

// 准备
$statement = $db_handle->prepare
(
'INSERT INTO posts(title, content) VALUES (?, ?)'
);

数据

下面,我们再去准备点要往 posts 表里放的数据 .. 一般这些数据可能来自用户填写的表单 ... 不过这里为了演示,我们可以直接去定义两个变量,来代表要插入的数据 。

$title = '阿甘正传';
$content = '他是一个占据着成年人躯体的幼童、一个圣贤级的傻子、一个超越真实的普通人、一个代表着民族个性的小人物。' ;

绑定

然后我们需要把这里的数据绑定到准备好的声明里面 ... 也就是用这个具体的数据,来代替在声明里面使用的点位符 ... 可以使用声明的 bindParam 方法 ...

上面准备好的声明叫做 $statement .. 调用它的 bindParam 方法 ... 方法里有两个参数,第一个参数是声明里的点位符 ... 如果我们在声明里给点位符起了名字,在这里就可以使用这个点位符的名字 ... 没起名字的话 ... 可以使用点位符的序号 ...

1,就表示第一个点位符 ...

这个方法的第二个参数是绑定的具体的数据 ... 第一个点位符表示的是要往 title 字段里面插入的数据 ... 这个数据,我们定义到了 $title 这个变量里面 .. 所以,这里就应该是 $title 这个变量 ...

另起一行 ... 再去为第二个点位符绑定数据 ....

// 绑定
$statement->bindParam(1, $title);
$statement->bindParam(2, $content);

执行

最后我们要去执行一下 .. 用的是声明的 execute() 方法 ...

// 执行
$statement->execute();

演示
这样如果我们刷新了这个页面,就会向 posts 这个数据表里面插入一条记录 ... 这条记录的 title 是在 $title 变量里定义的东西 ... content 是在 $content 变量里定义的东西 ...

保存 ...

再打开数据库的管理软件 .. 你可以使用 phpMyAdmin .... 这里我用的是 Sequal Pro ...

打开 php_course 这个数据库 ... 再打开它里面的 posts 这个数据表 ...

在这里,你会看到,刚才我们插入的这条记录。

0:00
0:00
4:42
0:00
2:17
0:00
0:00
0:00
1:22
3:45
0:00
0:00

插入数据《 PHP 基础 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点