20100810 PHP-MySQL-CLSS 7
*了解欄位型態之差異
請利用 phpMyAdmin 建立資料表
資料表名稱 test1
欄位名稱 型態 長度
a VARCHAR 10
b TEXT 300
c INT 4
d BLOB
f Date
練習
請在 phpMyAdmin 上按 " 新增 ”
因為輸入的 Value 與規範的型態不符合, 就會出現錯誤訊息
利用 ”載入”功能 匯入 pcschool 資料庫
Q: 為何 php 設定檔案上傳容量很大, 但 phpMyAdmin 卻沒辦法將資料載入系統?
A: 因為 Apache 在等待檔案上傳時, 有時間限制(預設 300 秒), 若超過預設時間, 則視為斷線(但是如果把 Apache 的 Timeout 設定延長, 將增加Apache 執行的負擔)
Lab: 利用指令匯出 MySQL
*mysqldump: 將資料匯出
以指令方式 登入 mysql
開啟 命令提示字元
開始 --> 執行 --> cmd
以下在命令提示底下操作
備份 pcschool
mysqldump -uroot -pphpmysql pcschool > pcschool.sql
備份 pcschool 資料庫並將資料分行
mysqldump -uroot -pphpmysql --skip-opt pcschool > pcschool2.sql
備份 pcschool 資料庫內的student 資料表
mysqldump -uroot -pphpmysql pcschool student > pcschool3.sql
備份 pcschool 資料庫內的student 資料表 及 job 資料表
mysqldump -uroot -pphpmysql pcschool student job > pcschool5.sql
備份 pcschool 不包含資料
mysqldump -uroot -pphpmysql --no-data pcschool > pcschool6.sql
備份 pcschool 不包含資料表結構
mysqldump -uroot -pphpmysql --no-create-info pcschool > pcschool7.sql
備份 pcschool 不包含資料表結構並換行
mysqldump -uroot -pphpmysql --skip-opt --no-create-info pcschool > pcschool8.sql
SQL 指令
在 phpMyAdmin 內新增 counter 資料庫( 需要先新增資料庫才能匯入 Orz...... )
首先嘗試使用 圖形介面匯入
得到的結果是 ............ Timeout
所以採取指令的方式 匯入
mysql -uroot -pphpmysql counter < record2009.sql
Lab: 新增帳號
以指令方式 登入 mysql
開啟 命令提示字元
開始 --> 執行 --> cmd
以下在命令提示底下操作
mysql -uroot -pphpmysql
grant all privileges on *.* to pcschool@localhost identified by 'phpmysql';
grant all privileges on board.* to php1@localhost identified by 'mysqlstart1';
grant select on board2.* to php3@localhost identified by 'mysqlstart3';
登入 phpMyAdmin 測試
php 連接至 MySQL
建立一個 Netbean 的PHP 專案 class7
建立新專案
File → New Project
→ PHP: PHP Application → Next
點選 Browse 按鈕 建立一個 class7 資料夾( 將source 按鈕調整於 C:\Appserv\www 目錄下 [網站根目錄] )
→ Finish
*當 php 及 MySQL 均是 UTF-8 編碼, php 與 MySQL 之間的資料傳輸也必須作 編碼設定, 否則會是亂碼 (請參考 unicode.php)
執行 mysqlquery1.php 測試(這樣會出現亂碼)
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>mysql_query</title></head><body><?
mysql_connect("localhost", "pcschool", "phpmysql") or die("無法連結主機");
mysql_select_db("pcschool") or die("無法連結資料庫");
//include("unicode.php");
//以下新增語法請做練習
//以下兩行為一行
//$sql = "insert into list (username, email, sex) values('pcschool', ‘quota123@ms14.url.com.tw', '男')";
//$sql = "insert into list (email, sex) values('quota123@ms14.url.com.tw', '男')";
//$sql = "insert into list values('quota123@ms14.url.com.tw','pcschool','男')";
$sql = "insert into list values('','pcschool','男')";
mysql_query($sql) or die(mysql_error( ));
?></body></html>
unicode.php 內容如下
<?
mysql_query("SET NAMES utf8");
mysql_query("CHARACTER SET utf8");
mysql_query("SET CHARACTER_SET_CLIENT =utf8");
mysql_query("SET COLLATION_CONNECTION=utf8_general_ci");
mysql_query("SET CHARACTER_SET_RESULTS =utf8");
mysql_query("SET CHARACTER_SET_SERVER = utf8");
mysql_query("SET character_set_connection=utf8"); ?>
測試步驟
Q: mysql_query( ) 內語法錯誤, 網頁畫面會顯示嗎?
A: 不會. 建議 mysql_query( ) 之後要接 or die(mysql_error()) , 若mysql_query( ) 有問題就會進行 mysql_error( )
-- class end --
*了解欄位型態之差異
請利用 phpMyAdmin 建立資料表
資料表名稱 test1
欄位名稱 型態 長度
a VARCHAR 10
b TEXT 300
c INT 4
d BLOB
f Date
練習
請在 phpMyAdmin 上按 " 新增 ”
- a欄位 請輸入 十個 中文字
- c欄位 請輸入英文字
- d欄位 請選擇檔案
- f 欄位 請輸入日期
因為輸入的 Value 與規範的型態不符合, 就會出現錯誤訊息
利用 ”載入”功能 匯入 pcschool 資料庫
Q: 為何 php 設定檔案上傳容量很大, 但 phpMyAdmin 卻沒辦法將資料載入系統?
A: 因為 Apache 在等待檔案上傳時, 有時間限制(預設 300 秒), 若超過預設時間, 則視為斷線(但是如果把 Apache 的 Timeout 設定延長, 將增加Apache 執行的負擔)
Lab: 利用指令匯出 MySQL
*mysqldump: 將資料匯出
- mysqldump -u帳號 -p密碼 資料庫 > SQL 檔案
- 將資料庫內容及結構匯出
- 加上 --skip-opt 參數, 可將資料分行
- mysqldump -u帳號 -p密碼 --skip-opt 資料庫 > SQL 檔案
- 資料庫名稱之後可接資料表名稱, 例如 mysqldump -u帳號 -p密碼
- --no-data 參數, 沒有資料表內容
- --no-create-info 沒有資料表結構
- 雖然 mysqldump 可以加入 -B 加入 " 建立資料庫 ” 語法 但匯入資料時若資料庫不存在, 將無法匯入資料
- -B 參數不實用, 建議匯入資料前先建立資料庫
以指令方式 登入 mysql
開啟 命令提示字元
開始 --> 執行 --> cmd
以下在命令提示底下操作
備份 pcschool
mysqldump -uroot -pphpmysql pcschool > pcschool.sql
備份 pcschool 資料庫並將資料分行
mysqldump -uroot -pphpmysql --skip-opt pcschool > pcschool2.sql
備份 pcschool 資料庫內的student 資料表
mysqldump -uroot -pphpmysql pcschool student > pcschool3.sql
備份 pcschool 資料庫內的student 資料表 及 job 資料表
mysqldump -uroot -pphpmysql pcschool student job > pcschool5.sql
備份 pcschool 不包含資料
mysqldump -uroot -pphpmysql --no-data pcschool > pcschool6.sql
備份 pcschool 不包含資料表結構
mysqldump -uroot -pphpmysql --no-create-info pcschool > pcschool7.sql
備份 pcschool 不包含資料表結構並換行
mysqldump -uroot -pphpmysql --skip-opt --no-create-info pcschool > pcschool8.sql
SQL 指令
- select 欄位名稱( 沒有則使用 * ) from 資料表
- 查詢指定欄位(或是所有的欄位)的資料
- 若欄位前面加上 distinct 代表過濾重複的資料
- As 將欄位或查詢結果以其他名稱命名
- MySQL 的 SQL 語法內可作數值計算
- MySQL 的 Concat 函數可合併多個字串
在 phpMyAdmin 內新增 counter 資料庫( 需要先新增資料庫才能匯入 Orz...... )
首先嘗試使用 圖形介面匯入
得到的結果是 ............ Timeout
所以採取指令的方式 匯入
mysql -uroot -pphpmysql counter < record2009.sql
Lab: 新增帳號
- 請以 root 身份登入 MySQL
- 語法 grant 權限 on 資料庫.資料表 to 帳號@主機 identified by ‘密碼 ‘
以指令方式 登入 mysql
開啟 命令提示字元
開始 --> 執行 --> cmd
以下在命令提示底下操作
mysql -uroot -pphpmysql
grant all privileges on *.* to pcschool@localhost identified by 'phpmysql';
grant all privileges on board.* to php1@localhost identified by 'mysqlstart1';
grant select on board2.* to php3@localhost identified by 'mysqlstart3';
登入 phpMyAdmin 測試
php 連接至 MySQL
- 連接至 MySQL Server
- mysql_connect( host, username, password )
- 挑選資料庫
- mysql_select_db( ‘資料庫' );
建立一個 Netbean 的PHP 專案 class7
建立新專案
File → New Project
→ PHP: PHP Application → Next
點選 Browse 按鈕 建立一個 class7 資料夾( 將source 按鈕調整於 C:\Appserv\www 目錄下 [網站根目錄] )
→ Finish
*當 php 及 MySQL 均是 UTF-8 編碼, php 與 MySQL 之間的資料傳輸也必須作 編碼設定, 否則會是亂碼 (請參考 unicode.php)
執行 mysqlquery1.php 測試(這樣會出現亂碼)
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>mysql_query</title></head><body><?
mysql_connect("localhost", "pcschool", "phpmysql") or die("無法連結主機");
mysql_select_db("pcschool") or die("無法連結資料庫");
//include("unicode.php");
//以下新增語法請做練習
//以下兩行為一行
//$sql = "insert into list (username, email, sex) values('pcschool', ‘quota123@ms14.url.com.tw', '男')";
//$sql = "insert into list (email, sex) values('quota123@ms14.url.com.tw', '男')";
//$sql = "insert into list values('quota123@ms14.url.com.tw','pcschool','男')";
$sql = "insert into list values('','pcschool','男')";
mysql_query($sql) or die(mysql_error( ));
?></body></html>
unicode.php 內容如下
<?
mysql_query("SET NAMES utf8");
mysql_query("CHARACTER SET utf8");
mysql_query("SET CHARACTER_SET_CLIENT =utf8");
mysql_query("SET COLLATION_CONNECTION=utf8_general_ci");
mysql_query("SET CHARACTER_SET_RESULTS =utf8");
mysql_query("SET CHARACTER_SET_SERVER = utf8");
mysql_query("SET character_set_connection=utf8"); ?>
測試步驟
- mysql_connect( ) 連接Server
- mysql_select_db( ) 挑選資料庫
- mysql_query( ) 執行 SQL 語法
Q: mysql_query( ) 內語法錯誤, 網頁畫面會顯示嗎?
A: 不會. 建議 mysql_query( ) 之後要接 or die(mysql_error()) , 若mysql_query( ) 有問題就會進行 mysql_error( )
-- class end --
沒有留言:
張貼留言