PHP 新手入门指南 - 通过 PDO 插入数据

之前系列中内容有介绍过 PDO 进行数据库查询并显示数据,这回将描述如何通过它向表中插入数据。

小实践

接下的内容都是建立在之前系列内容的代码基础上。

首先,在之前的数据库 mytodo 数据库下建立一张 users 表 ,结构如下:

CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

通过数据库客户端(比如 Sequel Pro )来创建表也会很方便。

接下来,我们需要调整 QueryBuilder.php,会增加一些代码实现插入数据库相关的操作。

<?php 

class QueryBuilder
{
    protected $pdo;

    public function __construct($pdo)
    {
        $this->pdo = $pdo;
    }

    public function selectAll($table)
    {
        $statement = $this->pdo->prepare("select * from {$table}");

        $statement->execute();

        return $statement->fetchAll(PDO::FETCH_CLASS);
    }

    public function insert($table, $parameters)
    {
        $sql = sprintf(
            'insert into %s(%s) values(%s)',
            $table,
            implode(', ', array_keys($parameters)),
            ':' . implode(', :', array_keys($parameters))
        );

        try {
            $statement = $this->pdo->prepare($sql);

            $statement->execute($parameters);
        } catch (Exception $e) {
            die('Whoops, something went wrong.'.$e->getMessage());
        }
    }
}

这里新增了 insert 方法,该方法会拼接传入的表名以及列参数信息成 SQL 语句,通过 PDO 执行操作。

这里使用了 try...catch 代码块用于捕获数据库操作中存在的异常。

我们的提交表单的请求会执行到 controllers/add-name.php 中:

<?php

$app['database']->insert('users', [
    'name' => $_POST['name']
]);

header('Location: /');

获取 POST 请求参数信息,向 users 表插入用户信息。


通过上面的操作,我们已经可以完成提交表单插入数据到数据表,接下来是读取这些数据显示在页面上。

首先,在 controllers/index.php 读取数据:

<?php

$users = $app['database']->selectAll('users');

require "views/index.view.php";

其次,在页面 views/index.view.php 上添加输出代码:

<?php require('partials/head.php'); ?>

<?php foreach ($users as $user) : ?>
    <li><?= $user->name; ?></li>
<?php endforeach; ?>

<h1>Submit Your Name</h1>

<form action="/names" method="POST">
    <input type="text" name="name">
    <button type="Submit">Submit</button>
</form>

<?php require('partials/footer.php'); ?>

运行程序感受一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Welcome 目前网络上充斥着大量的陈旧信息,让PHP新手误入歧途,传播着错误的实践和糟糕的代码,这必须得到纠正...
    layjoy阅读 21,773评论 7 118
  • Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象...
    廖马儿阅读 2,242评论 2 38
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,301评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,667评论 25 709
  • 一朵花,会枯萎; 一粒沙,会消失; 一颗星,会陨落; 一个人,会…… 离开!离开! ...
    暗香之渡阅读 550评论 0 2