在昨天的內容中我們大致介紹了什麼是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出這些資料庫裡的資料,那我們就明天再說吧!