next up previous contents
Next: 更新紀錄 Up: PHP Query 紀錄詢問 Previous: 新增紀錄   Contents   DYWANG_HOME

查詢資料表

  1. 撰寫 selectrecord.php,以 mysqli_fetch_array 函式取得資料表 tblphp 中的紀錄,顯示在網頁上。
    1. 函式 mysqli_fetch_array 的第 2 個參數 MYSQLI_ASSOC 表示回傳的陣列以欄位名稱為索引。
    2. mysqli_fetch_array($retval, MYSQLI_ASSOC) 也可以直接以函式 mysqli_fetch_assoc($retval) 取代。
    3. 若函式 mysqli_fetch_array 的第 2 個參數改為 MYSQLI_NUM 則會以數字從 0 開始為索引值。
    4. 養成好習慣,取得資料後使用函式 mysqli_free_result($retval); 釋放記憶體。
    [root@kvm8 ~]# vim /var/www/html/selectrecord.php
    [root@kvm8 ~]# cat /var/www/html/selectrecord.php
    <?php
    $dbhost = 'localhost:3306';
    $dbuser = 'root';
    $dbpass = '123qwe';
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass) 
    	or die(mysqli_connect_error().PHP_EOL);
    mysqli_select_db( $conn, 'dywphp' )
    	or die('Error: '.mysqli_error($conn).PHP_EOL);
    $sql = "select id, title, author,submission_date from tblphp";
    $retval = mysqli_query( $conn, $sql )
    	or die('Error: '.mysqli_error($conn).PHP_EOL);
    while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)) {
        echo "Dywphp ID :{$row['id']}  <br> ".
             "Title: {$row['title']} <br> ".
             "Author: {$row['author']} <br> ".
             "Submission Date : {$row['submission_date']} <br> ".
             "--------------------------------<br>";
    }
    mysqli_free_result($retval);
    echo "Fetched data successfully\n";
    mysqli_close($conn); 
    ?>
    
  2. curl 連上網址 http://kvm8.deyu.wang/selectrecord.php,管線處理將 html 換行標籤 <br> 改成 shell 的換行符號 \n。 網頁上列出資料表 tblphp 中的紀錄,其中第一筆紀錄時間為 0000-00-00 ,因為在網頁以函式 NOW() 輸入時間,php 程式將其判斷為字串。
    [root@kvm8 ~]# curl -s http://kvm8.deyu.wang/selectrecord.php | sed 's/<br> */\n/g'
    Dywphp ID :1  
    Title: PHP 
    Author: David 
    Submission Date : 0000-00-00 
    --------------------------------
    Dywphp ID :2  
    Title: MariaDB 
    Author: dywang 
    Submission Date : 2020-01-29 
    --------------------------------
    Fetched data successfully
    
  3. 修改 selectrecord.php 的查詢變數 $sql 加入 where 條件。
    [root@kvm8 ~]# vim /var/www/html/selectrecord.php
    [root@kvm8 ~]# grep dywang /var/www/html/selectrecord.php
    $sql = "select id, title, author,submission_date from tblphp where author='dywang'";
    
  4. curl 連上網址 http://kvm8.deyu.wang/selectrecord.php,管線處理將 html 換行標籤 <br> 改成 shell 的換行符號 \n。 網頁只列出資料表 tblphp 中 author='dywang' 的紀錄。
    [root@kvm8 ~]# curl -s http://kvm8.deyu.wang/selectrecord.php | sed 's/<br> */\n/g'
    Dywphp ID :2  
    Title: MariaDB 
    Author: dywang 
    Submission Date : 2020-01-29 
    --------------------------------
    Fetched data successfully
    
  5. 修改 selectrecord.php 的查詢變數 $sql,where 條件改成 like,並存成 selectlikerecord.php。
    [root@kvm8 ~]# vim /var/www/html/selectlikerecord.php
    [root@kvm8 ~]# grep 'dyw%' /var/www/html/selectlikerecord.php
    $sql = "select id, title, author,submission_date from tblphp where author like 'dyw%'";
    
  6. curl 連上網址 http://kvm8.deyu.wang/selectlikerecord.php,管線處理將 html 換行標籤 <br> 改成 shell 的換行符號 \n。 網頁只列出資料表 tblphp 中 author 開頭是 dyw 的紀錄,只有一筆 dywang。
    [root@kvm8 ~]# curl -s http://kvm8.deyu.wang/selectlikerecord.php | sed 's/<br> */\n/g'
    Dywphp ID :2  
    Title: MariaDB 
    Author: dywang 
    Submission Date : 2020-01-29 
    --------------------------------
    Fetched data successfully
    



De-Yu Wang 2020-04-07