iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Modern Web

1995到2021,php到react網站開發歷程系列 第 7

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出這些資料庫裡的資料,那我們就明天再說吧!


上一篇
DAY6-我的SQL
下一篇
DAY8-PHP和MYSQL(二)
系列文
1995到2021,php到react網站開發歷程30

尚未有邦友留言

立即登入留言