實機操作練習題

  1. 登入
    1. 遠端登入 kvm3 虛擬機。
    2. 以 root 身份登入 mariadb。
  2. 新增資料庫及資料表
    1. 新增資料庫 dbc
    2. 在資料庫 dbc 中建立資料表 tblcx,包含下列欄位:
      1. id int not null auto_increment,
      2. title varchar(30),
      3. author varchar(40) not null,
      4. primary key (id)
    3. 在資料表 tblcx 中加入五筆資料。
      1. author abc123
      2. author xyz222
      3. title ruby, author abc321
      4. title perl, author xyz123
      5. title php, author xyz456
    4. 在資料庫 dbc 中建立資料表 tblcy,包含下列欄位:
      1. author varchar(40) not null,
      2. count int
    5. 在資料表 tblcy 中加入六筆資料。
      1. author abc777, count 23
      2. author xyz777, count 12
      3. author abc321, count 43
      4. author xyz123, count 83
      5. author xyz456, count 92
      6. author abc99z, count 69
  3. 不要自行新增或改變資料庫及資料表內容
  4. 使用以下 php 範例程式,其中 ........ 依要求填入 mysql 語法,其中資料庫名稱依題目要求修改,變數 $str$_GET['str'] 取得。
    <?php
    $dbhost = 'localhost:3306';
    $dbuser = 'root';
    $dbpass = '123qwe';
    $str = $_GET['str'];
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass) 
    	or die(mysqli_connect_error().PHP_EOL);
    mysqli_select_db( $conn, 'dbc' )
    	or die('Error: '.mysqli_error($conn).PHP_EOL);
    $sql = ".............";
    $retval = mysqli_query( $conn, $sql )
    	or die('Error: '.mysqli_error($conn).PHP_EOL);
    while($row = mysqli_fetch_array($retval, MYSQLI_NUM)) {
    	echo "{$row[0]}\t{$row[1]}\t{$row[2]}\n";
    }
    mysqli_free_result($retval);
    mysqli_close($conn);
    ?>
    
  5. 在 /var/www/html/ 目錄下撰寫以下 php 程式:
    1. sort1.php:
      1. 查詢 tblcx 資料表所有紀錄。
      2. 先以 author 升序,再以 title 降序排列。
    2. sort2.php:
      1. 查詢 tblcy 資料表所有紀錄
      2. 先以 author 降序,再以 count 升序排列。
      3. 因為 tblcy 只有兩個欄位,所以 php 中的 \t{$row[2]} 必須刪除。
    3. join.php:
      1. 使用 JOIN 結合 tblcx 及 tblcy 兩個資料表
      2. 找出 author 同時出現在兩個資料表
      3. 而且 tblcx 的 author 開頭是 $str 的紀錄。
      4. 列出 tblcx.id, tblcx.author, tblcy.count。
    4. leftjoin.php:
      1. 使用 LEFT JOIN 選擇 tblcx 資料表所有紀錄
      2. 若 tblcy 資料表有共同的紀錄則一起列出
      3. 條件為兩個資料表 author 相同,而且 tblcx 的 author 開頭是 $str 的紀錄。
      4. 列出 tblcx.id, tblcx.author, tblcy.count 三個欄位資料,且每個欄位資料都用 IFNULL 函式,將 NULL 轉換成空字串。
    5. rightjoin.php:
      1. 使用 RIGHT JOIN 選擇 tblcy 資料表所有紀錄
      2. 若 tblcx 資料表有共同的紀錄則一起列出
      3. 條件為兩個資料表 author 相同,而且 tblcy 的 author 開頭是 $str 的紀錄。
      4. 列出 tblcx.id, tblcx.author, tblcy.count 三個欄位資料,且每個欄位資料都用 IFNULL 函式,將 NULL 轉換成空字串。
    6. null.php:
      1. 查詢 tblcx 資料表 title 為 null 的紀錄
      2. 依序列出 id, title, author 欄位,其中 title 使用 IFNULL(title, '$str') 將查詢到的 NULL 欄位輸出成 $str
    7. regexp.php:
      1. 查詢 tblcy 資料表 author 以 「$str 開頭且數字結尾」的紀錄。
      2. 列出所有欄位,但因 tblcy 只有兩個欄位,所以 php 檔中的陣列 row 輸出 \t${row[2]} 必須刪除。
  6. 修改 sorting.php 程式
    1. 使用資料庫 dbc
    2. 選擇資枓表 tblcx,以 $str 降序排序,列出所有欄位。
    3. 以 id 降序排序的測試方式及結果如下:
      [root@kvm3 html]# curl -s http://kvm3/sorting.php?"str=id" | sed 's/<br> */\n/g'
      ID: 5  
      Title: php 
      Author: xyz456 
      --------------------------------
      ID: 4  
      Title: perl 
      Author: xyz123 
      --------------------------------
      ID: 3  
      Title: ruby 
      Author: abc321 
      --------------------------------
      ID: 2  
      Title:  
      Author: xyz222 
      --------------------------------
      ID: 1  
      Title:  
      Author: abc123 
      --------------------------------
      Fetched data successfully
      
  DYWANG_HOME