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'); ?>

运行程序感受一下。

    原文作者:chansey
    原文地址: https://www.jianshu.com/p/853335637c61
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞