20100812 PHP-MySQL-CLASS 8
mysqldump 及 mysql 之 匯出入指令, 若是SQL 檔案, 不須登入 MySQL 就可以操作.
將 class8 內的 pcschool.sql 匯入到 pcschool 資料庫
mysql -uroot -pphpmysql pcschool < pcschool2.sql
請注意檔案的路徑 需要切換到該檔案pcschool2.sql 存放的目錄
建立一個 Netbean 的PHP 專案 class8
建立新專案
File → New Project
→ PHP: PHP Application → Next
點選 Browse 按鈕 建立一個 class8 資料夾( 將source 按鈕調整於 C:\Appserv\www 目錄下 [網站根目錄] )
→ Finish
將相關檔案複製到 class8 資料夾
Lab: 測試接收資料
phptestint.php 檔案內容如下
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>測試接收資料</title></head><body><?
$pid=$_GET['id'];
if (strlen($pid)){
if (!ereg("^[0-9]+$",$pid)){
die("你不知道什麼是數字嗎?");
}
else
die("很好.這是數字");
}
else{
die("請輸入資料");
}
?></body></html>
針對以上的檔案
mysql_query( ) or die(mysql_error());
一般常見的語法問題
create table 新資料表 select A資料表資料
Lab: 由 phpMyAdmin 的 SQL 功能內輸入 下列指令建立資料表
create table insertemployees select * from employees;
create table insertjob select * from job;
create table updateemployees1 select * from employees;
create table updateemployees2 select * from employees;
create table updateemployees3 select * from employees;
create table updatejob select * from job;
create table updateproducts select * from products;
create table delemployees1 select * from employees;
create table delemployees2 select * from employees;
create table delemployees3 select * from employees;
create table deljob select * from job;
執行結果如下
新增資料
Notes:
Q: 為何 php 可以跑, MySQL 可以跑, 但 php 無法連線至 MySQL?
A: 請寫一個網頁
<?
phpinfo();
?>
查看 MySQL 模組是否存在
**MySQL 連接過程整理
1.連接 MySQL Server
mysql_connect( )
2.挑選資料庫
mysql_select_db( )
3.編碼設定
以上三個步驟可以參考 server.php 內容
<?
mysql_connect("localhost", "root", "phpmysql") or die("無法連結主機");
mysql_select_db("pcschool") or die("無法連結資料庫");
include("unicode.php");
?>
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");
?>
4.執行 SQL 語法
mysql_query( )
5.將 mysql_query( ) 執行結果儲存於自訂變數
6-1 mysql_num_row( ) 計算筆數
Lab: 計算筆數
mysql_num_rows.php 內容如下
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計算筆數</title></head><body><?
@mysql_connect("localhost", "pcschool", "phpmysql") or die("無法連結主機");
@mysql_select_db("pcschool") or die("無法連結資料庫");
include("unicode.php");
$abc="select username from list";
echo $abc."<br>";
$sql = mysql_query($abc) or die(mysql_error( ));;
$rows = mysql_num_rows($sql);
if($rows==""){
echo "查無資料!";
}else{ echo "有 ".$rows." 筆資料喔!";}
?></body></html>
6-2 mysql_fetch_array( ) 回傳欄位資料
-- class end --
mysqldump 及 mysql 之 匯出入指令, 若是SQL 檔案, 不須登入 MySQL 就可以操作.
將 class8 內的 pcschool.sql 匯入到 pcschool 資料庫
mysql -uroot -pphpmysql pcschool < pcschool2.sql
請注意檔案的路徑 需要切換到該檔案pcschool2.sql 存放的目錄
建立一個 Netbean 的PHP 專案 class8
建立新專案
File → New Project
→ PHP: PHP Application → Next
點選 Browse 按鈕 建立一個 class8 資料夾( 將source 按鈕調整於 C:\Appserv\www 目錄下 [網站根目錄] )
→ Finish
將相關檔案複製到 class8 資料夾
Lab: 測試接收資料
phptestint.php 檔案內容如下
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>測試接收資料</title></head><body><?
$pid=$_GET['id'];
if (strlen($pid)){
if (!ereg("^[0-9]+$",$pid)){
die("你不知道什麼是數字嗎?");
}
else
die("很好.這是數字");
}
else{
die("請輸入資料");
}
?></body></html>
針對以上的檔案
- 可使用 strlen( ) 函數分析網址列是否傳遞參數, 及參數的長度
- if(!ereg(“規則”, $pid))
- ! 為相反
- ereg $pid 是否符合 ( ) 內的規則
mysql_query( ) or die(mysql_error());
- mysql_query( ) 執行 SQL 語法
- mysql_query( ) 異常則會執行 or 之後的語法
- mysql_query( ) 異常指 SQL 語法本身就有問題
- mysql_error( ) 顯示錯誤訊息
- die( ) 顯示訊息後停止執行網頁, 若不想顯示系統訊息, 可改為 die(“其他文字”)
一般常見的語法問題
- 字串資料沒加 單引號
- MySQL的資料本身就是要加單引號, 請不要把 php 對單雙引號的處理方式帶入 SQL 語法
- 欄位數量不對
- 少了空格
- 例如 insert into
create table 新資料表 select A資料表資料
- 由A資料表資料建立新資料表資料
Lab: 由 phpMyAdmin 的 SQL 功能內輸入 下列指令建立資料表
create table insertemployees select * from employees;
create table insertjob select * from job;
create table updateemployees1 select * from employees;
create table updateemployees2 select * from employees;
create table updateemployees3 select * from employees;
create table updatejob select * from job;
create table updateproducts select * from products;
create table delemployees1 select * from employees;
create table delemployees2 select * from employees;
create table delemployees3 select * from employees;
create table deljob select * from job;
執行結果如下
新增資料
- 若沒有欄位名稱
- insert into 資料表 values( 內容一, 內容二 );
- 必須列出所有欄位內容, 沒有內容請用 ’ ‘
- 所有欄位須依資料表內順序排列
- 若有欄位名稱
- insert into 資料表(欄位一, 欄位二) values( 內容一, 內容二 );
- 不須依資料表內順序排列
Notes:
- 當 MySQL 執行 insert into ( 新增 ), 刪除 ( delete ), 更新 ( update ) 等動作, 是不會顯示資料列表
- 若要顯示資料表列, 必須使用 select 語法
- mysql_query( ) 一次只能執行一 個 SQL 語法
- php5 另外提供 mysqli 函數, 可執行多個 SQL 語法
Q: 為何 php 可以跑, MySQL 可以跑, 但 php 無法連線至 MySQL?
A: 請寫一個網頁
<?
phpinfo();
?>
查看 MySQL 模組是否存在
**MySQL 連接過程整理
1.連接 MySQL Server
mysql_connect( )
2.挑選資料庫
mysql_select_db( )
3.編碼設定
以上三個步驟可以參考 server.php 內容
<?
mysql_connect("localhost", "root", "phpmysql") or die("無法連結主機");
mysql_select_db("pcschool") or die("無法連結資料庫");
include("unicode.php");
?>
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");
?>
4.執行 SQL 語法
mysql_query( )
- 若是 insert into, delete, update, 執行完成 mysql_query( ) 後資料表就改變
- 若是 select 查詢, 可以顯示資料
5.將 mysql_query( ) 執行結果儲存於自訂變數
- 若不儲存, 無法做後續利用
6-1 mysql_num_row( ) 計算筆數
Lab: 計算筆數
mysql_num_rows.php 內容如下
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>計算筆數</title></head><body><?
@mysql_connect("localhost", "pcschool", "phpmysql") or die("無法連結主機");
@mysql_select_db("pcschool") or die("無法連結資料庫");
include("unicode.php");
$abc="select username from list";
echo $abc."<br>";
$sql = mysql_query($abc) or die(mysql_error( ));;
$rows = mysql_num_rows($sql);
if($rows==""){
echo "查無資料!";
}else{ echo "有 ".$rows." 筆資料喔!";}
?></body></html>
6-2 mysql_fetch_array( ) 回傳欄位資料
- 回傳的資料丟給陣列變數儲存
- 例如 $list1=mysql_fetch_array( mysql_query()儲存值 );
- 陣列變數內儲存該筆紀錄的各欄位資料
- 例如 $list1[‘OrderID’]
-- class end --
沒有留言:
張貼留言