在昨天的内容中我们大致介绍了什麽是SQL以及一些Mysql的用法,那今天的目标就是要来把资料库和网页搭上线罗!搭上线之後我们留言版功能应该就算完成了呢。
同时只要学会两个东西的连线方法,之後要做什麽扩充的功能都不会太难,所以就是先给各位鱼竿再让各位自己钓鱼啦~
其实这一步骤也不是一个必要步骤,只是是我自己每次创建新的资料库时都会做的一件事。
先打开我们的phpMyAdmin→点开我们昨天新创的database→来到权限:
之後按下面的新增使用者帐号:
在这里可以自己输入想新增的使用者名称和帐号,这其实就是之後使用别的工具,要连线到这个资料库时会用到的帐号跟密码。
都填好之後因为是开发用途,下面的权限直接勾全选,如果是之後写在网页上,怕人家连上来乱搞就可以再设权限,设定完後滑到最底下按执行,这样新增使用者的步骤就完成了!
我每次会这样是因为系统预设的权限帐号会是root,而且预设是没密码的,不觉得这样太无聊了吗,写一个自己的帐号比较酷吧!
再来我们回到服务器:127.0.0.1,
打开使用者帐号:
到编辑权限把允许授权都开成是,这样就完成了!
再建立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出这些资料库里的资料,那我们就明天再说吧!
>>: 冒险村04 - Create PR with default template
在上一章中介绍了如何在 template 中插入 component 的变量,而本章节要介绍如何使用...
结构体介绍 CAN_FilterTypeDef typedef struct { uint32_t ...
这篇RecyclerView与前几篇介绍ListView相似,主要是用清单条列出来,让使用者简单明了...
样式表虽然较 JavaScript 单纯,但随着规则定义越来越多,样式表还是会因复杂的结构与繁杂的规...
程序开发的过程很难不接触到终端机操作,原生的画面非常"简约",透过套件强化後不只...