資料庫程式設計 – PHP+MySQL 第 十一章 表格異動處理程式  上一頁      下一頁

 

11-7 資料更新 – Update table

內容:

  • 11-7-1 Updte table 語法

  • 11-7-2 範例研討:更新學生資料

11-7-1 Update 語法

新資料取代現有資料表的內容,稱之為『更新』(Update),但資料表內有多筆資料,到底要更新哪一筆(或稱紀錄)或多筆資料同時更新,因此需要有一個 Where 敘述句來決定更新哪一筆或哪些資料。格式如下:

Update 資料表名稱

Set [<欄位_1>=<數值_1>, …<欄位_2>=<數值_2>]

Where <條件敘述>;

上述語句中,只要某一筆滿足 Where 條件敘述,則更新它指定欄位的內容。

11-7-2 範例研討 更新學生資料

(A) 系統功能:Ex11_8

系統需要一個可以修改學生資料的工具,期望表單網頁如下:

執行網頁的結果如下:

更新網頁的結果如下:

執行失敗則顯示如下:

 (B) SQL系統分析

修改學生的資料須由 students 表執行,如下:

SQL 程式如下:

update students

set name = ‘$name’, class_ID = ‘$class_ID’, …

where student_ID = ‘$student_ID’;

(C) 網頁製作技巧

如欲更新某一位學生資料,首先須先顯示該生資料後,再依其內容修改,修改後再更新其內容,因此需要三個網頁,如下:

(1) 表單網頁(Ex11_8-form.html)提供輸入欲修改學生的學號(student_ID),再傳送給執行網頁。

(2) 執行網頁(Ex11_8-action-1.php)利用表單網頁傳遞過來的 student_ID,由 students 表中查詢出該生目前的資料,提供修改參考,修改後將修改後資料傳遞給更新網頁。

(3) 更新網頁(Ex11_8-action-2.php)接收執行網頁所傳遞過來的訊息,執行更新命令修改其資料,並將結果顯示出來。

(D) 表單網頁的程式範例:Ex11_8-form.html

此網頁僅提供輸入欲修改資料學生的學號,如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>修改學生資料</title></head>

<body>

        <p> 修改學生資料 </p>

        <form name="表單" method="post" action="Ex11_8-action-1.php">

                   號:<input name = "student_ID" type = "text">        <BR><BR>

        <input type="submit" value="送出">

        </form>

</body>

</html>

(D) 執行網頁的程式範例:Ex11_8-action-1.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

29

30

31

32

<?php

        $student_ID = $_POST["student_ID"];

    $select_db = mysqli_connect("localhost", "root", "12345678", "course_db")

                or die("MySQL 伺服器連結失敗 <br>");

        $sql_query = "select *

                      from students

                                  where student_ID = '$student_ID'";

        $result = mysqli_query($select_db, $sql_query);

        $row = mysqli_fetch_row($result);

        if(!$row) {

                echo "沒有 $student_ID 學生資料,請至 AppServ 觀察 <BR>";

                exit();

        }

        echo "<p> 更新 $student_ID 學生資料 </p>";

        echo "<form name='表單' method='post' action='Ex11_8-action-2.php'>";

            echo "<input name='student_ID' value=$row[0] type='hidden'><BR>";

        echo "學生姓名:<input name='name' value=$row[1] type='text'><BR>";

                echo "班級代碼:$row[2] (轉班另外處理) <BR>";

        echo "性別:<input name='sex' value=$row[3] type='text'><BR>";

        echo "電話:<input name='tel' value=$row[4] type='text'><BR>";

        echo "電子郵件:<input name='mailbox' value=$row[5] type='text'><BR>";

        echo "地址:<input name='address' value=$row[6] type='text' size='60'><BR>";   

        echo "<input type='submit' value='送出'>";

    echo "</form>";

        mysql_close($db_link);

?>

 (E) 更新網頁的程式範例:Ex11_8-action-2.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

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

<?php

        $student_ID = $_POST["student_ID"];

        $name = $_POST["name"];

    $sex = $_POST["sex"];

    $tel = $_POST["tel"];

    $mailbox = $_POST["mailbox"];

    $address = $_POST["address"];

    $select_db = mysqli_connect("localhost", "root", "12345678", "course_db")

                or die("MySQL 伺服器連結失敗 <br>");

        $sql_query = "update students

                  set name='$name', sex='$sex', tel='$tel',

                      mailbox='$mailbox', address='$address' 

                  where student_ID = '$student_ID'";

        $result = mysqli_query($select_db, $sql_query);

    // 測試是否更新成功

        if (!$result){

                echo "學生資料更新失敗(請進入 AppServ 觀察) ! <ER>";

                exit();

        }

        // 查詢學生更新資料

        $sql_query = "select *

                      from students

                                  where student_ID = $student_ID";

        $result = mysqli_query($select_db, $sql_query);

    echo "更新學生資料如下:<BR><BR>";

        $items = array("學號", "姓名", "班級代碼", "性別", "電話", "郵件", "地址");

        echo "<table border = '2'><tr align='center'>";

        // 利用 foreach 迴圈印出陣列 $item

        foreach ($items as $value) {

                echo "<td> $value </td>";

        }

        echo "</tr>";

        while($row=mysqli_fetch_row($result)) {

                echo "<tr>";

                for($j=0; $j<mysqli_num_fields($result); $j++) {

                        echo "<td>$row[$j]</td>";

                }

                echo "</tr>";

        }

        echo "</table>";

        mysql_close($db_link);

?>

翻轉工作室:粘添壽

 

course_db 關聯圖

資料庫程式設計:

 

 

 

翻轉電子書系列: