iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0

為達到資料共享(Data Sharing),需使用應用程式讀取使用者的需求,利用PHP,透過SQL指令來存取資料庫裡的資料,依需求查詢,並將查詢結果回傳給使用者。

要開啟Apache,使PHP程式上傳至Apache後,進一步連線資料庫。
https://ithelp.ithome.com.tw/upload/images/20220930/20152201tlv5oPu8Nn.png

PHP透過new mysqli()函式來連線資料庫

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "online_store";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
  die("連線失敗: " . mysqli_connect_error());
}
else
	echo("連線成功");
mysqli_close($conn);
?>

$servername = "localhost";代表主機位置
$username = "root";代表登入帳號
$password = "";代表登入密碼,這裡為空字串
$dbname = "online_store";資料庫的名稱
$conn = new mysqli($servername, $username, $password, $dbname);用來連結資料庫
mysqli_close($conn);關閉資料庫

https://ithelp.ithome.com.tw/upload/images/20220930/20152201sBbY4x54f4.png

建立資料表
剛剛已經連線online_store資料庫了,現在要在裡面建立一個新的資料表,叫做commodity。

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "online_store";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
  die("連線失敗: " . mysqli_connect_error());
}
else
	echo("連線成功");
$sql = "CREATE TABLE commodity (
id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
c_name VARCHAR(30) NOT NULL,
price INT(10) NOT NULL,
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";

if (mysqli_query($conn, $sql)) {
  echo "commodity資料表創建成功";
} else {
  echo "commodity資料表創建失敗" . mysqli_error($conn);
}

mysqli_close($conn);
?>

將欄位的屬性設定好,下面的if-else用來判斷是否建立成功。
https://ithelp.ithome.com.tw/upload/images/20220930/201522019abKn3hNUA.png

https://ithelp.ithome.com.tw/upload/images/20220930/20152201TWYoTf86IV.png

https://ithelp.ithome.com.tw/upload/images/20220930/20152201AixDMDhdek.png

新增紀錄到commodity資料表內

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "online_store";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
  die("連線失敗: " . mysqli_connect_error());
}
//else
	//echo("連線成功");

$sql = "INSERT INTO commodity (id,c_name,price)
VALUES (1,'apple',25)";

if (mysqli_query($conn, $sql)) {
  echo "資料輸入成功";
} else {
  echo "錯誤:" . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
?>

$sql = "INSERT INTO commodity (id,c_name,price) 找到指定的資料表,後面括號為其各個欄位名稱。

VALUES (1,'apple',25)";根據欄位屬性,輸入要存進去的值。
並判斷指令是否成功。
https://ithelp.ithome.com.tw/upload/images/20220930/20152201CStMnOlKN9.png

https://ithelp.ithome.com.tw/upload/images/20220930/20152201ASZcaFS9rf.png

查詢資料

剛剛只有輸入一筆資料,這邊再補兩筆XD。
https://ithelp.ithome.com.tw/upload/images/20220930/20152201ZdZL74ZDM7.png

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "online_store";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
	die("連線失敗: " . mysqli_connect_error());
}
//else
	//echo("連線成功");

$sql = "SELECT id,c_name,price FROM commodity";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
  // output data of each row
	echo"資料表查詢結果";
	echo "<table border=1>";
	echo"<tr>";
	echo"<td>"."id"."</td>"."<td>"."c_name"."</td>"."<td>"."price"."</td>";
	echo"</tr>";
	while($row = mysqli_fetch_assoc($result)) {
		echo"<tr>";
		echo"<td>".$row["id"]."</td>" ."<td>". $row["c_name"]."</td>"."<td>". $row["price"]."</td>". "<br>";
		echo"</tr>";
	}
	echo"</table>";
} else {
	echo "0 results";
}

mysqli_close($conn);
?>

$sql = "SELECT id,c_name,price FROM commodity";代表要查詢的欄位資料,我這邊是整個資料表都查。

$result = mysqli_query($conn, $sql);執行查詢

用迴圈將欄位資料跑一遍,印出資料,這邊有用表格排列。
https://ithelp.ithome.com.tw/upload/images/20220930/20152201g80S6Fm3Jb.png

除了查詢全部,只要改一下指令,也能做部分查詢。

參考資料:
w3schools_PHP_Connect_to_MySQL
書籍「動畫圖解資料庫系統理論」。


上一篇
預存程序與觸發程序介紹
下一篇
資料庫系統小總結
系列文
大學每日任務:攝取新知識及學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言