2016年10月27日 星期四

php mysqli_fetch_array() 一維陣列

mysqli_fetch_array() 反回的是一維陣列

1. 用print_r或var_dump檢查$row得到的是一維陣列(第一筆資料)
#!/usr/bin/php
<?php
$user='username';
$passwd='password';
$host='host';
$dbname='dbname';
$conn=mysqli_connect($host, $user, $passwd, $dbname);
$sql="select * from tablename";
$result=mysqli_query($conn,$sql);

$row=mysqli_fetch_array($result);
print_r($row);
?>

用print_r或var_dump檢查$row得到的是一維陣列(第一筆資料)

array
(
   [0] => value of field0
   [field0] => value of field0
   [1] => value of field1
   [field1] => value of field1
)

2.若要取出所有資料放入二維陣列
while($row = mysqli_fetch_array($result)) {
$data[] = $row;
}



3. 一般來說列印資料庫資料只需如下:
while($row = mysqli_fetch_array($result))
{
echo $row[0].",".$row[1]."\n";

}

4. 如果要取出所有資料庫資料放入二維陣列,再列印如下:
#!/usr/bin/php
<?php
$user='username';
$passwd='password';
$host='host';
$dbname='dbname';
$conn=mysqli_connect($host, $user, $passwd, $dbname);
$sql="select * from tablename";
$result=mysqli_query($conn,$sql);
$length = mysqli_num_rows($result);

while($row = mysqli_fetch_array($result))
{
$data[] = $row;
}


for ($i=0;$i<$length;$i++)
{
  for ($j=0;$j<2;$j++) {

  echo $data[$i][$j].",";
  }
  echo "\n";
}

?>








2016年10月22日 星期六

迴圈


1. For 迴圈 
若於程式設計階段已知要執行的次數 則可使用for敘述
for 固定變量,限定數值範圍 (適用數值變量)
for start,end,step start,end,step都必須是數字

#!/bin/bash
for ((i=0; i<10; i++))
do
echo $i;
done

#!/bin/bash
Distro=('openSUSE' 'Red hat' 'Debian' 'Ubuntu' 'Fedora')
for ((i=0;i<${#Distro[@]};i++))
do
  echo "Linux Distro[$i]=>"${Distro[$i]}
done

#!/usr/bin/perl
@array = ('openSUSE', 'Red hat', 'Debian', 'Ubuntu', 'Fedora');
$length = @array;
for ($i=0;$i<$length;$i++)
{
print "$array[$i]\n";
}

 2. While迴圈
若未知執行次數的話 則應使用while或repeat
while迴圈 稱為前測試迴圈
while 限定條件
while(xx) xx可以是任何運算式
也就是說 先測試條件運算式為真時 繼續執行迴圈 也有可能不執行迴圈內容就直接離開

#!/bin/bash
i=0
while [ $i -lt 10 ];
do
   echo $i;
   ((i++))
done

#!/bin/bash
Distro=('openSUSE' 'Red hat' 'Debian' 'Ubuntu' 'Fedora')
i=0
while [ $i -lt ${#Distro[@]} ]
do
  echo "Linux Distro[$i]=>"${Distro[$i]}
  ((i++))
done

#!/usr/bin/perl
@array = ('openSUSE', 'Red hat', 'Debian', 'Ubuntu', 'Fedora');
$length = @array;
$i=0;
while ($i<$length)
{
print "$array[$i]\n";
$i++
}


3. do while迴圈
repeat   稱為後測試迴圈
也就是說 先執行迴圈 待條件運算式為真時再離開迴圈 也就是 迴圈內容至少執行一次


4. foreach迴圈 
foreach提供陣列很便利的輸出方式,
foreach 語法結構說明:
 
  結構一:
         每跑一圈foreach會把陣列($array)的陣列值
        (array value)存放到 $value 中。
 
         foreach ( $array as $value )
                     ... 執行程式碼 ...
  結構二:
        與結構一的意思一樣,但多增加了把陣列的所引
      (array key)'會同時將array key 取出並存放於
       $key 中。
   
       foreach ( $array as $key => $value )
                  ... 執行程式碼 ...

#!/usr/bin/php
<?php
$dataArray=array('openSUSE', 'Red hat', 'Debian', 'Ubuntu', 'Fedora');
foreach($dataArray as $daKey => $daValue)
{
 echo "\$dataArray[$daKey]=>".$daValue."\n";
}
?>

#!/usr/bin/perl
@array = ('openSUSE', 'Red hat', 'Debian', 'Ubuntu', 'Fedora');
foreach my $i (@array)
{
  print "$i\n";
}











2016年10月18日 星期二

判斷指令

1. cmd1 ; cmd2
無論對錯2個都執行

2. cmd1 && cmd2
第一的對,第二個執行
第一個錯,第二個跳掉不執行
第一個對,第二個錯。執行第一個

3. cmd1 || cmd2 || cmd3 || cmd4
從第一個開始有對的執行完畢





單引號與雙引號,與跳脫符號

1. 電腦在讀字元時有時當字元看,有時不當字元看
     e.g.:  echo
            echo abc  -> abc
            echo ~ -> /root
            echo '  -> error
            echo "  -> error
            echo !  -> !
            echo @ -> @
            echo * -> /......................

2. 產生2件事:不當字元的字有何意義。如何印出不當字元的字
如何印出不當字元的字: 用跳脫符號 \

e.g. : echo \~ -> ~
       echo \' -> '
       echo \" ->"

跳脫符號加特定字母有特意義。
e.g. : \n   換行


不當字元看的字有何意義
e.g.:  單引號與雙引號

echo '$PATH' -> $PATH (單引號內所有字元當字元

echo ''$PATH" -> /usr/bin:/usr/local/bin(雙引號除了 一些特殊字元,例如$ 、  \,引號內所有字元當字元)

ex: echo '\' -> \
      echo "\" -> error

php e.g.
#!/usr/bin/php
<?php
$color = 'red';
$item = 'hat';
$result = sprintf('I have a %s %s\n', $color,$item);
echo $result;
?>
ans:I have a red hat\n

#!/usr/bin/php
<?php
$color = 'red';
$item = 'hat';
$result = sprintf("I have a %s %s\n", $color,$item);
echo $result;
?>
ans:I have a red hat

最常見的一個例子是C程式語言中,用反斜線字元「\」作為跳脫字元,來表示那些不可打印的ASCII控制符。在URI協定中,跳脫字元是百分號「%」。

2016年10月17日 星期一

家用常識

#延長線買: 防突波(anti-surge)

#水管彎的目的: trap

#套筒,板手  
所謂二分、三分、四分,是指套筒和把手連接處的規格
2/8=1/4= 二分
3/8 = 三分
4/8 = 四分
力矩扳手:
長度X 力
牛頓米

1.和解
2.調解
     勞資糾紛
     房屋修繕
     行車意外
     消費爭議
     醫療糾紛
     合夥糾紛
     財產爭議
    
3.傷害刑法
律師費
  律師函
  存證信函
  訴狀
  談話諮詢費
  外出車馬費
  訴訟委任

2016年10月13日 星期四

檔案系統的掛載與卸載(mount and umount)

檔案系統的掛載與卸載(mount and umount)
因為Linux的檔案系統的階層可以跨越獨立的分割區以及多重的磁碟機,所以有需要在開機的時候自動掛載這些檔案系統。此外,可抽換式磁碟(如抽取式硬碟,光碟等)以及遠端NFS伺服器上的檔案系統,會有經常性的掛載與卸載,因此不會採用開機時自動掛載的方式。開機時掛載有關的所有資訊會被紀錄載/etc/fstab檔案中。當系統開機時,定義於/etc/fstab檔案中的檔案系統將會受到檢查與掛載的處理。當使用者想要掛載可抽換式磁碟時,亦會參考到/etc/fstab中的資訊。

檔案/etc/fstab是一的文字檔,如以下的範例:
/dev/sda1      /                               btrfs            defaults                                       1 1
/dev/sda2      /home                      xfs              defaults                                      1 1
/dev/sda6      /root                        ext4            defaults                                       1 1
/dev/sda3      swap                        swap           pri=42                                          0 0
usbdevfs        /proc/bus/usb     usbdevfs      noauto                                        0 0
/dev/cdrom   /media/cdrom        auto    ro,noauto,user,exec                        0 0
/dev/sdb1      /home/user/usb      vfat     mode=0777,uid=500,gid=100       0 0
//ip/temp       /home/user/temp   cifs      iocharset=utf8,user=user,password=,rw,uid=user,gid=users

/etc/fstab中每一列都有六個欄位,分別是:
1. Device(裝置)
這個欄位用來指定分割區的裝置檔,如/dev/sda1代表第一顆硬碟的第一個主要分割區。

2. Mount Point(掛載點)
這個欄位用來指定檔案系統所要掛載的目錄。如上例/dev/sda1包含root檔案系統,則會被掛載到 / 目錄。/dev/sda2 掛載到/home目錄,代表將第一顆硬碟的第二的主要分割區整個掛到/home底下,於是/home底下的使用者檔案便可共用一整個partition。

3. Filesystem Type(檔案系統類型)
不同的檔案系統具有不同的Filesystem Type。

4. Mount Options(掛載類型)
這個欄位包含一份以逗號隔開的選項清單。一般指定檔案系統是要以唯讀,可讀寫,或預設等等的方式掛上。

5. Dump Frequency(備份頻率)
dump程式(一個標準的unix備份工具)會參考到/etc/fstab中每個檔案系統在這裡的設定,以決定每個檔案系統多久備份一次。設為0則代表不備分。

6. fsck的檢查順序
fsck 是一個unix標準的磁碟檢查及除錯的工具(程式)。開機時亦會執行fsck這個指令來檢查磁碟。當fsck指令的-A參數被指定時,便會參考到/etc/fstab這個檔案,並依照檢查順序欄位的數字大小依序作檢查。這個欄位只能出現0,1,2三個值。
0    表示fsck不檢查
1    先檢查
2    檢查完設為1的檔案系統後在檢查設為2的檔案系統。

掛載與卸載指令 – mount 及 umount
mount    [-option]
mount -o uid=user -o gid=users -o mode=755 -t  vfat   /dev/sdb1  /home/usb
說明:
[-option]
-a        掛載/etc/fstab檔中所列示的所有分割區。但有noauto選項的分割區除外。例如光碟,或其他抽取式磁碟。
-h     顯示輔助說明
-r    將檔案系統掛成read-only(唯讀)
-w        將檔案系統掛成read-write(可讀寫)
-o mount-option 在命令列上指定掛載選項。
-t fstype 指定檔案系統類型。

掛載選項:
以下的選項可以用在mount指令中(上頁褐色部分,使用-o 選項)或/etc/fstab檔案中(第四個選項)。
sync    建立同步I/O,當對資料讀寫時,會同步寫入檔案系統。但因為同步,效率較差。
async    建立非同步I/O,一般使用這個。
auto    使用-a選項時會自動掛載的檔案系統。系統開機時會執行mount –a,也就是說,設定這個選項時,檔案系統便會在開機時被掛載。
noauto    與auto相反。
exec        允許分割區上所包含的程式可以被執行。
noexec    與exec相反
user        允許一般使用者掛載此檔案系統,但不允許一般使用者卸載。
users    允許一般使用者mount及umount此檔案系統。
nouser    一般使用者不可mount及umount此檔案系統。
ro        唯讀,與-r命令列選項相等。
rw        可讀寫,與-w命令列選項相等。
defaults    包含rw,exec,auto,nouser,async等。(用defaults就不用指定一堆)。

檔案系統類型:
以下的檔案系統類型可以用在mount指令中(上頁紅色部分,使用-t 選項)或/etc/fstab檔案中(第三個選項)。Linux包含的檔案系統類型非常之多,以下只列出最常用者:
ext4       標準linux檔案系統
vfat        一般windows的FAT16,FAT32均可在linux系統中指定為vfat檔案系統。
iso9660    光碟
nfs    network file system。遠端檔案系統。
swap    swap(虛擬記憶體)分割區。
cifs
auto


2016年9月29日 星期四

螺釘安卡

鐵釘
用於一般木料之接合,通常使用於室內。

鋼釘
接和水泥牆面或木料與水泥材料,硬度高,不易鏽蝕

銅釘
用於木質飾品之接合固定,價格較低

木螺絲
用於木料或搭配壁虎使用於水泥材料

鐵板牙螺絲
用於固定鐵板材之物件,搭配華司使用可增加鎖固能力

鑽尾螺絲
又稱自攻螺絲,末端鑽尾設計可較輕鬆鑽穿軟金屬材料

安卡壁虎
埋入水泥中搭配螺釘使用,使其膨脹於恐壁,增加牢固

膨脹螺絲
埋入水泥材質中,做螺釘上固定,一般為較大載重使用

華司
搭配羅斯使用,增加鎖固面積,加強鎖固能力