一. 宣告
一個基本陣列 :$a = array( 0=>"a" , 1=>"b" , 2=>"c" , 3=>"d" ) ;
以下為陣列示意圖:
以下有幾種相同效果的宣告方法
方法1: 一個一個元素加上去。
$a = array();
$a[] = "a";
$a[] = "b";
$a[] = "c";
$a[] = "d";
方法2: 將元素全部排進去。
$a = array( "a", "b" , "c" , "d" ) ;
方法3: 指定一個初始的鍵值0,將元素全部排進去,陣列會自動編排第一個鍵值0、第二個鍵值1,以此類推。
$a = array( 0 => "a", "b" , "c" , "d" ) ;
方法4: 本文第一行的方法,將每個元素都指定鍵值,一個一個排下去。
$a = array( 0=>"a" , 1=>"b" , 2=>"c" , 3=>"d" ) ;
二.印出
一般來說,陣列印出都使用迴圈,當然還有特殊方法
$a = array( 0=>"a" , 1=>"b" , 2=>"c" , 3=>"d" ) ;
印出上面內容有下面幾個方法
方法1: 使用for迴圈
for( $i = 0 ; $i<count($a) ; $i++ )
{
print $a[$i]
}
//結果:abcd
方法2: 使用while
while( $i<count($a) )
{
print $a[$i++];
}
//結果:abcd
方法3: 用 implode( 每個元素中間要用什麼區隔 , 陣列 ) ,
先將陣列合併成一個字串,在印出。此方法比較有效率。
print implode( "," , $a ) ; //印出陣列元素,每個元素中間用 "," (逗號) 隔開。
//結果:a,b,c,d
方法4: 用foreach( 陣列 as 鍵值 => 數值 ) 印出陣列鍵值與元素。
foreach( $a as $key => $value )
print $key . "," . $value ."、" ;
//結果:0,a、1,b
、 2,c
、 3,d、
foreach( $a as $value )
print $value ;
//結果:abcd
撰寫:zap
參考:Dreamweaver CS3 + PHP 網頁資料庫範例教學(文魁)
2012年5月20日 星期日
【SQL】多個資料表的SELECT搜尋
如果只要顯示以下3個欄位
order.name 、 food.name 還有 drink.name
整體語法:
SELECT 欄位
FROM 資料表1 INNER JOIN 資料表2 ON 資料表1的欄位 = 資料表2的欄位
FROM 資料表1 INNER JOIN 資料表2 ON 資料表1的欄位 = 資料表2的欄位
ON→連接2個欄位
分析一下大原則:
SELECT 欄位1,欄位2,...
FROM 飲料資料表 INNER JOIN( 點餐資料表 INNER JOIN 食物資料表 ON 點餐資料表欄位 = 食物資料表欄位 ) ON 飲料資料表欄位 = 點餐資料表欄位
- 先連結 點餐資料表 與 食物資料表
- 再連結 點餐資料表欄位 與 食物資料表欄位
- 飲料資料表 再與 點餐資料表 連接
- 再連接 飲料資料表欄位 與 點餐資料表欄位
SQL搜尋語法如下:
SELECT order.name , food.name , drink.name
FROM drink INNER JOIN
(order INNER JOIN food ON order.foodid = food.foodid )
ON drink.drinkid = order.drinkid
總結:
- 資料表連結誰先誰後都無所謂,但是一定要符合關聯資料表的原則
- 多個資料表連結,必須先連結其中2個,剩下的再逐一連結
撰寫:zap
參考:SQL SERVER 2008R2 資料庫設計實務(碁峯)
【PHP】mysql_connect 與 mysql_pconnect
在php裡面
要與mysql建立連線的兩個函式
mysql_connect 與 mysql_pconnect
兩個有什麼差別呢?
mysql_connect很簡單
就是用完就丟
也不需要使用mysql_close()
因為它使用完畢就會自動關閉連線
只是每次建立時比較耗一些資源
mysql_pconnect
則是建立一個持續的連線
它會保留給下次連線使用
而且不能用mysql_close()來關閉
如果今天只對一個資料庫作存取
只需要注意mysql最大連線數即可
如果今天是要對兩個或多個資料庫作存取
要非常注意
假設今天連線數上限是300
當連線到a資料庫時有250
如果接下來有許多使用者要連線到b資料庫時
那還剩多少連線可以使用呢?
答案是50
因為已經分給a資料庫的連線
是不能關閉或是轉換給b資料庫的
所以使用mysql_pconnect
是不是完全好的?
我覺得要考慮許多的情況才行
依照你網站的需求
再去決定要使用哪種連線方式
文:葉小誠
要與mysql建立連線的兩個函式
mysql_connect 與 mysql_pconnect
兩個有什麼差別呢?
mysql_connect很簡單
就是用完就丟
也不需要使用mysql_close()
因為它使用完畢就會自動關閉連線
只是每次建立時比較耗一些資源
mysql_pconnect
則是建立一個持續的連線
它會保留給下次連線使用
而且不能用mysql_close()來關閉
如果今天只對一個資料庫作存取
只需要注意mysql最大連線數即可
如果今天是要對兩個或多個資料庫作存取
要非常注意
假設今天連線數上限是300
當連線到a資料庫時有250
如果接下來有許多使用者要連線到b資料庫時
那還剩多少連線可以使用呢?
答案是50
因為已經分給a資料庫的連線
是不能關閉或是轉換給b資料庫的
所以使用mysql_pconnect
是不是完全好的?
我覺得要考慮許多的情況才行
依照你網站的需求
再去決定要使用哪種連線方式
文:葉小誠
【PHP】防止SQL注入攻擊 (mysql_real_escape_string)
mysql_real_escape_string()會自動在特殊字元前面加上\
例如: $a =what's what\'s
這樣一來就可以防止SQL攻擊。
例如有段程式碼如下:
$sql="SELECT * FROM test WHERE id = ' ".$id." ' pass= ' ".$passwd." ' ";
如果有人在pass裡面輸入 ' or '1'='1
那這樣不就會變
$sql="SELECT * FROM test WHERE id = ' test ' pass= ' ' or '1'='1 ' ";
$sql="SELECT * FROM test WHERE id = ' test ' pass= ' ' or '1' = '1' ";
所以我們把程式碼改成
$sql="SELECT * FROM test WHERE id =
' ".mysql_real_escape_string($id)." '
pass= ' ".mysql_real_escape_string($passwd)." ' ";
這樣就不怕有心人了
例如: $a =what's what\'s
這樣一來就可以防止SQL攻擊。
例如有段程式碼如下:
$sql="SELECT * FROM test WHERE id = ' ".$id." ' pass= ' ".$passwd." ' ";
如果有人在pass裡面輸入 ' or '1'='1
那這樣不就會變
$sql="SELECT * FROM test WHERE id = ' test ' pass= ' ' or '1'='1 ' ";
$sql="SELECT * FROM test WHERE id = ' test ' pass= ' ' or '1' = '1' ";
所以我們把程式碼改成
$sql="SELECT * FROM test WHERE id =
' ".mysql_real_escape_string($id)." '
pass= ' ".mysql_real_escape_string($passwd)." ' ";
這樣就不怕有心人了
訂閱:
文章 (Atom)