因為之前曾經用過MSSQL
所以相對的覺得PHP+MySQL整個已經包好
還有後臺管理系統可以用、簡單了很多
但是老師說,因為牽扯到資料庫的語法
同學們會需要花更多時間去重複練習

正確連至資料庫

在phpmyadmin中建立db

建立config.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
/* Database credentials. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
/*define() 函數定義一個常量。
在設定以後,常量的值「無法」更改
不需要開頭的美元符號 ($)
作用域不影響對常量的訪問
常量值只能是字符串或數字*/
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'db_test');

/* Attempt to connect to MySQL database */
$link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
// 輸入中文也OK的編碼
mysqli_query($link, 'SET NAMES utf8');

// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
else{
echo "Connected!";
return $link;

}
?>

建立index.php

1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>連接資料庫</title>
</head>
<body>
<h1>資料庫練習</h1>
<?php
$conn=require_once('config.php');
?>
</body>
</html>

最後成功連線的結果如下:

用php新增Table(較少用到)

新增table大部分會選擇使用phpmyadmin建立

選擇用php建立的方法如下(通常會需要建立很多審核機制):
剛剛的index.php裡新增了一個表單讓使用者決定要新增的table名稱、欄位等

1
2
3
4
5
6
<form action="createTable.php" method="post">
Tabel Name: <input type="text" name="tb_name">
Colume 1: <input type="text" name="col1">
Colume 2: <input type="text" name="col2">
<input type="submit" name="submit" value="建立">
</form>

再新增一個createTable.php
(或者可以選擇寫在同一頁,用的是htmlspecialchars($_SERVER['PHP_SELF']))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php 
$conn=require_once('config.php');
if(isset($_POST["submit"])){
$tb_name=$_POST["tb_name"];
$col1=$_POST["col1"];
$col2=$_POST["col2"];

$sql="CREATE TABLE ".$tb_name." (
".$col1." INT(6) NOT NULL PRIMARY KEY,
".$col2." VARCHAR(50))";
if(mysqli_query($conn,$sql)){
echo mysqli_info($conn);
echo "Created!<br>";
}
else{
echo "Failed!<br>";
echo mysqli_errno($conn);
}
mysqli_close($conn); //最後記得把和資料庫的連線關起來
}

?>

補充
header()的用法

1
2
3
4
else{
echo "操作錯誤!";
header('Location:index.php');
}

新增資料

1
2
3
4
5
<form action="InsertData.php" method="post">
$col1: <input type="number" name="col1_val">
$col2: <input type="text" name="col2_val">
<input type="submit" name="submit2" value="插入資料">
</form>

插入資料的內容與create table大同小異,注意這邊submit的name有改過
insertDate.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php 
$conn=require_once('config.php');
if(isset($_POST["submit2"])){
$col1_val=$_POST["col1_val"];
$col2_val=$_POST["col2_val"];
$sql="INSERT INTO tb2 VALUES (".$col1_val.", '".$col2_val."')"; //這邊的table name會用的是早已確定存在在資料庫中的
if(mysqli_query($conn,$sql)){
echo mysqli_info($conn);
echo "Inserted!<br>";

}
else{
echo "Failed!<br>";
echo mysqli_errno($conn);
}


mysqli_close($conn);}

else{
echo "操作錯誤!";
header('Location:index.php');
}

?>

最後完成的結果如下:


刪除或修改也是一樣的想法
只是可能是透過onclick的事件處理來執行php腳本