2012年10月24日 星期三

php連接oracle資料庫

ㄧ、先將php.ini中extension=php_oci8.dll前的註解拿掉。
二、下載:http://ray.myweb999.com/download/oracle.zip解壓縮到自己建立的資料夾
      中,例如:c:\oracle。
三、將二中的資料夾路徑放進環境變數中系統環境變數的Path裡!然後一定要重開機

      這裡是我覺得最不思議的部分,照理說那些檔案若是放進c:\windows\system32  
      而c:\windows\system32本來就在系統環境變數的Path裡應該就可以才對,但好像不
      行,沒時間深入研究,有興趣的人可以試試,或許也可以成功!

四、PHP中連接的範例程式如下:

(1)connect:

$db_link = oci_connect("account","password","(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.172.225)(PORT=1521))(CONNECT_DATA=(SID=db_sid_name)))");
if(!$db_link)
{
      die("資料連結失敗!");
}

(2)insert:    
$query = "insert into table(field1,field2,field3)values('$field1','$field2','$field3')";
$stid = oci_parse($db_link, $query);
$r = oci_execute($stid);

(3)select:
$query = "select field1,field2,field3 from table where field1 = 'value'";
$stid = oci_parse($db_link, $query);
$r = oci_execute($stid);
while(list($field1,$field2,$field3) = oci_fetch_array($stid))
        echo $field1.",".$field2.",".$field3."<br>";

五、安裝過oracle某些工具程式的電腦或許還會有問題,印象中google後的解決辦法是去
      registry裡面刪掉一些鍵值,詳細步驟未記錄,下次有機會再記錄了~

2012年10月9日 星期二

MS SQL日期欄位的比較方式

利用 between [起始日期字串] and [結束日期字串]

範例如下:

select * from MyTb where dateField between '2012-01-01' and '2012-12-31'

2012年10月7日 星期日

java Reflection - 利用class name來產生物件達到終級Factory設計模式


MyOracleDB繼承自MyDB,如此一來“MyOracleDB”可以從ini檔中讀出~~

try 
{
    Object myDB = Class.forName("MyOracleDB").newInstance();
    ((MyDB)myDB).connectDB();
catch (Exception e)
{
    e.printStackTrace();
}

2012年3月15日 星期四

如何在Mysql裡面使用update+join

就用一個例子說明:
update TABLE1 inner join TABLE2 on  TABLE1.FIELD1 = TABLE2.FIELD1  set TABLE1.FIELD2  = concat( TABLE1.FIELD2 ,'xxx') where  TABLE2.FIELD3  < '2011-09-27'

跟MSSQL不同的是它的join子句就寫在update的後面,取代原來update後面的table,這樣比MSSQL似乎更直覺了些~~

2012年2月15日 星期三

Windows 7 惱人的安全性警告如何關閉

強烈建議直接使用administrator來更名,就不會有一大堆莫名其妙的權限問題。

但是如果你已經使用一個具有管理者權限的使用著一段時間了,改用administrator會導致桌面及一些設定跑掉,這時可以使用:msconfig這個指令,執行後出現一系統設定視窗:
1.在"工具"的頁籤中找到"變更UAC設定",然後按下右下角的"啟動"
2. 將左邊的拉桿拉到最下面的"不要通知",然後按下"確定"
3.關閉系統設定視窗即可。

當然,這樣惡意程式要破壞你的電腦時你也不會察覺囉!所以請謹慎使用~~

2012年2月13日 星期一

PHP中解決headers already sent的王者之道!

相信常常使用session、header的朋友們常常遇到這個警告訊息!
這通常是不難解決,只要注意不要在對瀏覽器送出head資訊前就送出了body資訊即可。
但是有時候在做多國語言時,就發生了一些奇怪的狀況,明明沒有送出空白字元,
依然出現這個警告,偏偏因為是語言檔,又不能用ANSI編碼(註:我遇到問題時是用UTF-8編碼)
這時候可以使用下面得指令解決!
ob_start();
請注意這一行程式一定要放在最前面!

為什麼它能解決?因為他打開了一個叫做輸出緩衝(Output Buffer)的東西,詳細的技術原理
現在沒空鑽研,就先用吧!

2012年2月8日 星期三

SQL技巧:Count+Distinct的妙用

先看範例:
Select count(distinct title) from imageCDtb where scandate >= '$begindate' and scandate <= '$enddate'
這個SQL可以計算不同的tittle共有幾個!

SQL技巧:Count(Sum)+Group by的妙用

直接先看範例:
select title,count(title) from imageCD where scandate >= '$begindate' and scandate <= '$enddate' group by title
這樣的SQL可以把重複的title只抓一個出來,然後還能計算有幾個重復的title!

count若是改成sum那就是計算該欄位數值的加總哦~