PHP 與MySQL 運作 建立與關閉資料連線 選擇資料庫 資料表查詢-利用SQL 指令

Slides:



Advertisements
Similar presentations
第5章 HTML 標籤介紹.
Advertisements

第8讲 HTML与PHP基础 静态网页 vs. 动态网页.
第7章 表 格 清华大学出版社.
模块1 网页设计基础 实训1 体验HTML文档 1.1 网页基础知识 1.2 网站配色方案 1.3 网站设计常用软件
第二部分 HTML语言控制 本次课的主要内容: 1、认识网页文件的结构 2、HEAD、TITLE、BODY等基本标记符的使用
HTML.
第3章 超文本标记语言(HTML) 3.1 基本结构标记 3.2 文本格式标记 3.3 超链接标记<A></A>
第四章 網頁表單與資料傳遞.
留言版 1.先Create一個留言板的table
Introduction to PHP part3
2018/11/11 CGI程式設計進階 (for UNIX Perl) 國立中央大學電算中心 陳慶彥.
第四組 停車場搜尋系統 第四組 溫允中 陳欣暉 蕭積遠 李雅俐.
PHP +MySQL快速入門 Lesson 4.
PHP與MySQL連結 大葉大學 資工系 黃鈴玲.
LINQ 建國科技大學 資管系 饒瑞佶.
PHP 與MySQL 運作 建立與關閉資料連線 選擇資料庫 資料表查詢-利用SQL 指令
SQL結構化查詢語言 SQL是 Structured Query Language 的縮寫,簡單的說,SQL是一種與資料庫溝通的共通語言,它是當時在 IBM 工作的 E.F. Codd於1970 年針對關聯式模型 ( relational model ),所建構出來的資料庫理論,也因此有了所謂關聯式資料庫的系統,但在發展的初期,由於各種關聯式資料庫系統廠商的.
PHP與SQL語法存取MySQL SQL
Ch13 存取MySQL資料庫 實作:會員管理系統
後端教學-MYSQL 講師:邱小楓(邱珈蓉)
連結資料庫 ACCESS MSSQL.
利用PHP將資料存入MySQL PHP 5 Tutorial 範例:
網路概念 APACHE PHP MYSQL HTML BY 董仔 08/01/14.
高等資料庫管理系統 Advanced Database Management System
資料庫管理 操作DBMS 指導教授:楊維邦  助教:廖皓翔.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
資料庫操作.
第 10 章 PHP 存取 MySQL 資料庫.
無障礙網頁 公關室.
SQL Stored Procedure SQL 預存程序.
PHP+MySQL互動式網頁程式設計班 檔案上傳程式設計 講師:林業峻 CSIE, NTU 7 / 3, 2010.
檔案上傳 所謂檔案上傳,就是將檔案由客戶端的主機,藉 由瀏覽器傳送到伺服器的資料夾上。
PHP 程式流程控制結構.
SQL結構化查詢語言 SQL是 Structured Query Language 的縮寫,簡單的說,SQL是一種與資料庫溝通的共通語言,它是當時在 IBM 工作的 E.F. Codd於1970 年針對關聯式模型 ( relational model ),所建構出來的資料庫理論,也因此有了所謂關聯式資料庫的系統,但在發展的初期,由於各種關聯式資料庫系統廠商的.
Echo Server/Client Speaker:Fang.
Ch12 MySQL資料庫管理 網頁程式設計.
App Inventor2呼叫PHP存取MySQL
資料庫程式設計 VB資料庫設計簡介 週次:6 建國科技大學 資管系 饒瑞佶.
PHP與SQL語法存取MySQL SQL
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
武汉纺织大学传媒学院 cm.wtu.edu.cn
表單(Form).
PHP +MySQL快速入門 Lesson 3.
PHP+MySQL互動式網頁程式設計班 PHP+MySQL資料庫語法與應用 講師:林業峻 CSIE, NTU 6 / 26, 2010.
架站實做—AppServ
网页设计与制作教程第5版 机械工业出版社同名教材 配套电子教案.
HTML 103 互動式網頁.
Pocket Access.
VB2005 DataBase Manipulation Command for Access
Ch09 在網頁之間傳遞資訊 網頁程式設計.
表單(Form).
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
PHP與MySQL 入門學習指南 凱文瑞克 著 第 22 章 SQL 介紹與建立MySQL資料庫.
表格(HTML – FORM).
HTML 103 互動式網頁 助教:黃毓瑩.
PHP與SQL語法存取MySQL SQL
利用PHP將資料存入MySQL PHP 5 Tutorial 範例:
第6章 PHP的数据采集.
表格(HTML – FORM)
基本指令.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
資料庫PROJECT B 沈芝羽 B 李翊銘.
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
表格 (Table).
分頁.
連結資料庫 MYSQL.
第2章 块级标签 经济管理学院.
SQLite資料庫 靜宜大學資管系 楊子青.
表单页面 表单是用户利用浏览器对Web站点网络数据库进行查询的一种界面,用户利用表单可以输入信息或选择选项等,然后将这些信息提交给服务器进行处理。通过表单,既可以将浏览器的信息发送到Internet服务器上,同时表单也可以使用户与站点的浏览者交互或从浏览者那里收集信息。它是网页的设计者和使用者相互交流的工具。表单对象包括文本域(单行、多行、密码)、列表、菜单、复选框、单选框、按钮等。
Presentation transcript:

PHP 與MySQL 運作 建立與關閉資料連線 選擇資料庫 資料表查詢-利用SQL 指令 PHP with MySQL PHP 與MySQL 運作 建立與關閉資料連線 選擇資料庫 資料表查詢-利用SQL 指令

PHP 在使用 MySQL 資料庫的資源時, 必須經過以下的流程: 建立連線 (設定字元集與連線校對) 選擇資料庫 操作資料表 取得結果 讀取資料回傳 關閉連結

建立資料連線 mysqli_connect():建立資料連結 PHP 要使用 MySQL 資料庫的資源,首先 要建立與資料庫伺服器之間的連線。 在資源使用完畢之後,必須要關閉資料的 連線,將佔用的資源釋放。 mysqli_connect():建立資料連結 在 PHP 中可以使用 mysqli_connect() 函式建立 與 MySQL之間的連線,其語法格式如下: mysqli_connect(MySQL伺服器位址, 帳號, 密碼, 資料庫名稱);

建立資料連線 建立「資料連線」範例 $db_link= mysqli_connect('127.0.0.1', 'root', 'pwd999', 'studdb'); // $db_link 稱為連接識別碼(link identifier) 而為因應可能出現的錯誤(如資料庫未啟動、連線埠口被佔用 等問題),此一指令最好加上錯誤處理機制如下: $db_link = mysqli_connect('localhost', 'root', 'pwd999', 'studdb') or die("Could not connect : " . mysqli_error()); 或是 $db_link =@mysqli_connect('localhost', 'root', 'pwd999', 'studdb'); if (!$db_link) die("Could not connect : " . mysqli_error());

設定字元集與連線校對 mysqli_set_charset($db_link,"utf8"); 如果 MySQL 資料庫本身的字元集與連線校對使 用 big5 繁體中文,而 PHP 程式中卻是使用 utf-8 的編碼進行連線,顯示結果會有亂碼。  統一使用 utf-8 的字元集與連線校對 在建立資料連線之後必須馬上宣告字元集與連線 校對。 可使用mysqli_set_charset () 或 mysqli_query() 函式進行設定,指令如下: mysqli_set_charset($db_link,"utf8"); 或 mysqli_query($db_link, "SET NAMES 'utf8'");

建立連線引入檔 在 PHP 程式中若要使用 MySQL 資料庫伺服器中的資 源,都必須經過建立資料連線,一直到設定字元集與 連線校對的步驟。 可將此標準流程中的共同使用的程式碼儲存為一個單 獨的檔案。(例如: connMysql.php) 無論哪個程式頁面需要使用到資料庫時就將這個檔案 引入,即可完成使用資料庫前這一系列的動作。 include 'connMysql.php'; 可提高開發程式的效率,未來維護更加方便。

連線引入檔範例 connMysql.php <?php //資料庫主機設定 $db_host = "localhost"; $db_username = "studdb"; $db_password = “pwd999"; //連線伺服器 $db_link = @mysqli_connect($db_host, $db_username, $db_password, 'studdb'); if (!$db_link) die("資料連結失敗!"); //設定字元集與連線校對 mysqli_set_charset($db_link, 'utf8'); ?> <?php header("Content-Type: text/html; charset=utf-8"); Include "connMysql.php"; $sql_query = "SELECT * FROM `students`"; $result = mysqli_query($db_link, $sql_query); …

選擇資料庫 「選擇資料庫」範例 mysqli_select_db($db_link, "dbname"); 或 在成功的建立與資料連線後,在 PHP 中可以 使用 mysqli_select_db() 函式選擇使用的資料庫, 其語法格式如下: 也可利用mysql_query指令達成相同功能 「選擇資料庫」範例 mysqli_select_db($db_link, "dbname"); 或 mysqli_query($db_link, "use dbname"); mysqli_select_db(連接識別碼, 資料庫名稱); mysqli_query(連接識別碼, "use 資料庫名稱 ");

執行資料表查詢 當成功建立資料連線、選好資料庫之後,就可以對資料 表執行資料的查詢、新增、更新或刪除等動作。 我們可以使用 mysqli_query() 函式在 MySQL 中「執行 SQL 指令」,其語法格式如下: 「資料表查詢」範例 $result= mysqli_query($db_link, "select * from `students`"); mysqli_query(連接識別碼, SQL 指令字串);

分析表身 (取得查詢資料) 由資料庫回傳的資料分成兩個部分, 取得查詢資料,依索引方式不同,可使用以下 三種不同指令: 「表頭」,也就是所傳回資料的欄位名稱, 「表身」,也就是分析傳回的資料內容。 取得查詢資料,依索引方式不同,可使用以下 三種不同指令: mysqli_fetch_row( ): 以"整數"為索引 mysqli_fetch_assoc( ): 以"欄位名稱"為索引 mysqli_fetch_array( ): 以"整數"及"欄位名稱"為索引均可

mysqli_fetch_row( ) -以整數為索引 讀取查詢結果中的一筆資料,存成一個「陣 列」,若到達記錄的底部就會回傳 false 例: $row_result = mysqli_fetch_row($result); mysqli_fetch_row(資源識別碼)

分析表身-以整數為索引範例 <?php include "connMysql.php"; $sql_query = "SELECT * FROM `students`"; $result = mysqli_query($db_link, $sql_query); while ($row_result=mysqli_fetch_row($result)) { foreach($row_result as $item => $value) echo $item = $value <br />"; echo "<hr />"; } ?>

分析表身-以欄位為索引範例 <?php include "connMysql.php"; $sql_query = "SELECT * FROM `students`"; $result = mysqli_query($db_link, $sql_query); while($row_result=mysqli_fetch_assoc($result)) { foreach($row_result as $item => $value) echo $item = $value<br />"; echo "<hr />"; } ?>

分析表身-以「整數及欄位名稱」為索引 <?php include "connMysql.php"; $sql_query = "SELECT * FROM `students`"; $result = mysqli_query($db_link, $sql_query); while($row_result=mysqli_fetch_array($result)) { foreach($row_result as $item => $value) echo $item = $value <br />"; echo "<hr />"; } ?>

移動記錄指標 無論使用 mysqli_fetch_row()、mysqli_fetch_assoc() 或 mysqli_fetch_array() 函式,每執行一次資料識別碼中的記錄指標只會向下移動一筆。如果我們想在執行查詢後可以直接前往指定的記錄所在,可以使用 mysqli_data_seek() 函式,其語法格式如下: mysqli_data_seek(資源識別碼, 記錄指標位置)

分析表頭 由資料庫回傳的資料分成兩個部分, 「表頭」,也就是所傳回資料的欄位名稱, 「表身」,也就是分析傳回的資料內容。 在PHP 中可利用mysqli_fetch_field()指令,從 表頭逐一取得欄位,其指令格式如下: 而因SQL查詢子句的不同,所傳回的表頭欄 位數也不同,因此通常以while指令進行分析 mysqli_fetch_field(資源識別碼)

分析表頭範例(補充) <?php include("connMysql.php"); $sql_query = "SELECT * FROM `students`"; $result = mysqli_query($db_link, $sql_query); … echo "<table><tr>"; while ($field = mysqli_fetch_field($result)) { echo "<th>{$field->name}</th>"; } echo "</tr></table>"; ?> http://127.0.0.1/example_gotop/ch14/php_mysql_field.php

取得所有欄位: mysql_fetch_fields( ) <?php include("connMysql.php"); $sql_query = "SELECT * FROM `students`"; $result = mysqli_query($db_link, $sql_query); … echo "<table><tr>"; $fieldInfo = mysqli_fetch_fields($result); foreach ($fieldInfo as $fi) { $fName= $fi->name; echo "<th>$fName</th>"; } echo "</tr></table>"; ?>

學生資料管理系統 http://ycchen.im.ncnu.edu.tw/www2011/lab/iClass.zip

database: studdb, table: students

引入檔: connMysql.php <?php //資料庫主機設定 $db_host = "127.0.0.1"; $db_username = "studdb"; $db_password = “pwd999"; $db_name = $db_username; //連線伺服器 $db_link = @mysqli_connect($db_host, $db_username, $db_password, $db_name); if (!$db_link) die("資料連結失敗!"); //設定字元集與連線校對 mysqli_set_charset($db_link, 'utf8'); ?>

data.php (1/3) <?php include "connMysql.php"; $sql_query = "SELECT * FROM `students`"; $result = mysqli_query($db_link, $sql_query); $total_records = mysqli_num_rows($result); ?>

data.php (2/3) <h1 align="center">學生資料管理系統</h1> <p align="center">目前資料筆數:<?php echo $total_records;?>,<a href="add.php">新增學生資料</a>。</p> <table border="1" align="center"> <!-- 表格表頭 --> <tr> <th>座號</th><th>姓名</th><th>性別</th><th>生日</th> <th>電子郵件</th><th>電話</th><th>住址</th><th>功能</th> </tr>

data.php (3/3) <?php while($row_result=mysqli_fetch_assoc($result)){ echo "<tr>"; echo "<td>".$row_result["cID"]."</td>"; echo "<td>".$row_result["cName"]."</td>"; echo "<td>".$row_result["cSex"]."</td>"; echo "<td>".$row_result["cBirthday"]."</td>"; echo "<td>".$row_result["cEmail"]."</td>"; echo "<td>".$row_result["cPhone"]."</td>"; echo "<td>".$row_result["cAddr"]."</td>"; echo "<td><a href='update.php?id=".$row_result["cID"]."'>修改</a> "; echo "<a href='delete.php?id=".$row_result["cID"]."'>刪除</a></td>"; echo "</tr>"; } ?>

新增 (add.php)

add.php (1/2) <form action="" method="post" name="formAdd" id="formAdd"> <table border="1" align="center" cellpadding="4"> <tr><th>欄位</th><th>資料</th></tr> <tr><td>姓名</td><td><input type="text" name="cName" id="cName"></td></tr> <tr><td>性別</td><td> <input type="radio" name="cSex" id="radio" value="M" checked>男 <input type="radio" name="cSex" id="radio" value="F">女 </td></tr> <tr><td>生日</td><td><input type="text" name="cBirthday" id="cBirthday"></td></tr> <tr><td>電子郵件</td><td><input type="text" name="cEmail" id="cEmail"></td> </tr> <tr><td>電話</td><td><input type="text" name="cPhone" id="cPhone"></td></tr> <tr><td>住址</td><td><input name="cAddr" type="text" id="cAddr" size="40"></td></tr> <tr> <td colspan="2" align="center"> <input name="action" type="hidden" value="add"> <input type="submit" name="button" id="button" value="新增資料"> <input type="reset" name="button2" id="button2" value="重新填寫"> </td> </table> </form>

add.php (2/2) <?php if (isset($_POST["action"])&&($_POST["action"]=="add")) { include("connMysql.php"); $sql_query = "INSERT INTO `students` (`cName` ,`cSex` ,`cBirthday` ,`cEmail` ,`cPhone` ,`cAddr`) VALUES ("; $sql_query .= "'".$_POST["cName"]."',"; $sql_query .= "'".$_POST["cSex"]."',"; $sql_query .= "'".$_POST["cBirthday"]."',"; $sql_query .= "'".$_POST["cEmail"]."',"; $sql_query .= "'".$_POST["cPhone"]."',"; $sql_query .= "'".$_POST["cAddr"]."')"; mysqli_query($db_link, $sql_query); $mysqli_close($db_link); //重新導向回到主畫面 header("Location: data.php"); } ?>

修改 (update.php)

update.php (1/2) <?php include("connMysql.php"); if (isset($_POST["action"])&&($_POST["action"]=="update")) { $sql_query = "UPDATE `students` SET "; $sql_query .= "`cName`='".$_POST["cName"]."',"; $sql_query .= "`cSex`='".$_POST["cSex"]."',"; $sql_query .= "`cBirthday`='".$_POST["cBirthday"]."',"; $sql_query .= "`cEmail`='".$_POST["cEmail"]."',"; $sql_query .= "`cPhone`='".$_POST["cPhone"]."',"; $sql_query .= "`cAddr`='".$_POST["cAddr"]."' "; $sql_query .= "WHERE `cID`=".$_POST["cID"]; mysqli_query($db_link, $sql_query); $mysqli_close($db_link); //重新導向回到主畫面 header("Location: data.php"); } $sql_db = "SELECT * FROM `students` WHERE `cID`=".$_GET["id"]; $result = mysqli_query($db_link, $sql_db); $row_result=mysqli_fetch_assoc($result); ?>

update.php (2/2) <form action="" method="post" name="formFix" id="formFix"> <table border="1" align="center" cellpadding="4"> <tr><th>欄位</th><th>資料</th></tr> <tr><td>姓名</td><td> <input type="text" name="cName" id="cName" value="<?php echo $row_result["cName"];?>"> </td></tr> <tr><td>性別</td><td> <input type="radio" name="cSex" id="radio" value="M" <?php if($row_result["cSex"]=="M") echo "checked";?>>男 <input type="radio" name="cSex" id="radio" value="F" <?php if($row_result["cSex"]=="F") echo "checked";?>>女 <tr><td>生日</td><td> <input type="text" name="cBirthday" id="cBirthday" value="<?php echo $row_result["cBirthday"];?>"> <tr><td>電子郵件</td><td> <input type="text" name="cEmail" id="cEmail" value="<?php echo $row_result["cEmail"];?>"> <tr><td>電話</td><td> <input type="text" name="cPhone" id="cPhone" value="<?php echo $row_result["cPhone"];?>"> <tr><td>住址</td><td> <input name="cAddr" type="text" id="cAddr" size="40" value="<?php echo $row_result["cAddr"];?>"> <tr><td colspan="2" align="center"> <input name="cID" type="hidden" value="<?php echo $row_result["cID"];?>"> <input name="action" type="hidden" value="update"> <input type="submit" name="button" id="button" value="更新資料"> <input type="reset" name="button2" id="button2" value="重新填寫"> </table> </form>

刪除 (delete.php)

delete.php (1/2) <?php include("connMysql.php"); if (isset($_POST["action"])&&($_POST["action"]=="delete")) { $sql_query = "DELETE FROM `students` WHERE `cID`=".$_POST["cID"]; mysqli_query($db_link, $sql_query); $mysqli_close($db_link); //重新導向回到主畫面 header("Location: data.php"); } $sql_db = "SELECT * FROM `students` WHERE `cID`=".$_GET["id"]; $result = mysqli_query($db_link, $sql_db); $row_result=mysqli_fetch_assoc($result); ?>

delete.php (2/2) <form action="" method="post" name="formDel" id="formDel"> <table border="1" align="center" cellpadding="4"> <tr><th>欄位</th><th>資料</th></tr> <tr><td>姓名</td><td><?php echo $row_result["cName"];?></td></tr> <tr><td>性別</td><td> <?php if ($row_result["cSex"]=="M") echo "男"; else echo "女"; ?> </td></tr> <tr><td>生日</td><td><?php echo $row_result["cBirthday"];?></td></tr> <tr><td>電子郵件</td><td><?php echo $row_result["cEmail"];?></td></tr> <tr><td>電話</td><td><?php echo $row_result["cPhone"];?></td></tr> <tr><td>住址</td><td><?php echo $row_result["cAddr"];?></td></tr> <tr> <td colspan="2" align="center"> <input name="cID" type="hidden" value="<?php echo $row_result["cID"];?>"> <input name="action" type="hidden" value="delete"> <input type="submit" name="button" id="button" value="確定刪除這筆資料嗎?"> </td> </tr> </table> </form>

資料分頁 (data_page.php)

data_page.php (1/2) <?php include "connMysql.php"; $pageRow_records = 5; $num_pages = 1; //若已經有翻頁,將頁數更新 if (isset($_GET['page'])) $num_pages = $_GET['page']; //本頁開始記錄筆數 = (頁數-1)*每頁記錄筆數 $startRow_records = ($num_pages -1) * $pageRow_records; //未加限制顯示筆數的SQL敘述句 $sql_query = "SELECT * FROM `students`"; //加上限制顯示筆數的SQL敘述句,由本頁開始記錄筆數開始,每頁顯示預設筆數 $sql_query_limit = $sql_query." LIMIT " . $startRow_records. ", " . $pageRow_records; //以加上限制顯示筆數的SQL敘述句查詢資料到 $result 中 $result = mysqli_query($db_link, $sql_query_limit); //以未加上限制顯示筆數的SQL敘述句查詢資料到 $all_result 中 $all_result = mysqli_query($db_link, $sql_query); //計算總筆數 $total_records = mysqli_num_rows($all_result); //計算總頁數=(總筆數/每頁筆數)後無條件進位。 $total_pages = ceil($total_records/$pageRow_records); ?> data_page.php (1/2)

data_page.php (2/2) <table border="0" align="center"> <tr> <?php if ($num_pages > 1) { // 若不是第一頁則顯示 ?> <td><a href="data_page.php?page=1">第一頁</a></td> <td><a href="data_page.php?page=<?php echo $num_pages-1;?>">上一頁</a></td> <?php } ?> <?php if ($num_pages < $total_pages) { // 若不是最後一頁則顯示 ?> <td><a href="data_page.php?page=<?php echo $num_pages+1;?>">下一頁</a></td> <td><a href="data_page.php?page=<?php echo $total_pages;?>">最後頁</a></td> </tr> </table> <tr><td>頁數: <?php for ($i=1; $i<=$total_pages; $i++) { if ($i==$num_pages) echo $i." "; else echo "<a href=\"data_page.php?page=$i\">$i</a> "; } ?> </td></tr>