DAY7-PHP和MYSQL(一)

前言:

在昨天的内容中我们大致介绍了什麽是SQL以及一些Mysql的用法,那今天的目标就是要来把资料库和网页搭上线罗!搭上线之後我们留言版功能应该就算完成了呢。

同时只要学会两个东西的连线方法,之後要做什麽扩充的功能都不会太难,所以就是先给各位鱼竿再让各位自己钓鱼啦~

准备动作:

其实这一步骤也不是一个必要步骤,只是是我自己每次创建新的资料库时都会做的一件事。

先打开我们的phpMyAdmin→点开我们昨天新创的database→来到权限:

之後按下面的新增使用者帐号:

在这里可以自己输入想新增的使用者名称和帐号,这其实就是之後使用别的工具,要连线到这个资料库时会用到的帐号跟密码。

都填好之後因为是开发用途,下面的权限直接勾全选,如果是之後写在网页上,怕人家连上来乱搞就可以再设权限,设定完後滑到最底下按执行,这样新增使用者的步骤就完成了!

我每次会这样是因为系统预设的权限帐号会是root,而且预设是没密码的,不觉得这样太无聊了吗,写一个自己的帐号比较酷吧!

再来我们回到服务器:127.0.0.1,

打开使用者帐号:

到编辑权限把允许授权都开成是,这样就完成了!

PHP端怎麽做:

再建立PHP端连线时,我们通常会创立一个专门用来连线的档案,让之後如果有多个页面要连线都只要require这个档案就好了,这里我们就在原本index.php旁边创一个pdo.php吧!

至於为甚麽叫pdo呢?主要是因为我们接下来要透过一个叫做pdo的方法来连上资料库,但这其实也不是连上资料库的唯一方法,只是pdo算是里面相对好用且安全的一种,那接下来阿森就会用此方法来作介绍。

建立好之後我们可以在里面输入这些code:

<?php
$pdo = new PDO('mysql:host=localhost;port=3306;dbname=ithelps', '刚刚的帐号', '刚刚的密码');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>

这样一来pdo.php就完成了!

接下来我们回到index.php,并在最上方新增一个<?php标签并在底下加入这一行:

<?php
require_once "pdo.php";

?>

<!DOCTYPE html>
...

接着就是把我们要跟资料库的操作写在这个段落里,这里我们先处理资料insert的部分,写好後大概会长这样:

<?php
require_once "pdo.php";

$name = "匿名";
$email = "匿名";
$msg = "";

if( isset($_GET['msg']) && $_GET['msg']!='' ){
    $msg = htmlentities($_GET['msg']);
    echo($msg);
    if( isset($_GET['name']) && $_GET['name']!='' ){
        $name = htmlentities($_GET['name']);}
    if( isset($_GET['email']) && $_GET['email']!='' ){
        $email = htmlentities($_GET['email']);}

    $stmt = $pdo->prepare('INSERT INTO msg (name, mail, msg) VALUES (:name, :email, :msg)');
        $stmt->execute(array(
            ':name' => $name,
            ':email' => $email,
            ':msg' => $msg));
        header("Location: index.php");
        return;
}

?>

这里要注意的地方应该就是要使用Prepare Statement(prepare),因为如果直接输入SQL指令的话,是有可能被人家用SQL侵入攻击的喔!也就是在本来应该要输入资料的地方输入SQL指令,并入侵到你的资料库乱搞。

但只要有prepare statement就没问题了,所以之後使用也要注意!

然後把它放在原先index.php中的最上方~

接下来我们就可以测试看看了,在网页上填入一些讯息:

之後按送出,再检查资料库的状态:

可以发现成功新增了我们刚刚输入的资料,那从php insert到mysql的部分就完成啦!

小结:

今天大致介绍了如何把资料由pdo的方法写入Mysql,当然这些都只是最基本的用法,许多更复杂的多资料库Insert、Select甚至其他架设网站的工具如react等,连线到资料库的方法都是建立在这样的概念之上,所以今天的东西只要会用大概就会一半啦!

明天我会继续介绍怎麽show出这些资料库里的资料,那我们就明天再说吧!


<<:  Day 4 - Object 物件组合技

>>:  冒险村04 - Create PR with default template

[Angular] Day9. Transforming Data Using Pipes

在上一章中介绍了如何在 template 中插入 component 的变量,而本章节要介绍如何使用...

19. STM32-CAN-BUS (下)

结构体介绍 CAN_FilterTypeDef typedef struct { uint32_t ...

[Android Studio 30天自我挑战] RecyclerView元件介绍

这篇RecyclerView与前几篇介绍ListView相似,主要是用清单条列出来,让使用者简单明了...

25 - Stylelint - Lint CSS 程序码

样式表虽然较 JavaScript 单纯,但随着规则定义越来越多,样式表还是会因复杂的结构与繁杂的规...

[Day5] MacOS - 打造美观的终端机画面

程序开发的过程很难不接触到终端机操作,原生的画面非常"简约",透过套件强化後不只...