1、第13章 PHP與Access建立網頁資料庫,13-1 Access建立資料庫 13-2 建立資料庫連結 13-3 查詢資料表和取得欄位資訊 13-4 取得資料表的記錄資料 13-5 ODBC的錯誤處理,13-2 建立資料庫連結,13-2-1 新增ODBC系統資料來源 13-2-2 開啟與關閉ODBC資料庫連結,13-2 建立資料庫連結,PHP並沒有提供直接存取Access資料庫的相關函數,而是需要透過ODBC來存取資料庫,在新增ODBC資料來源後,就可以如同MySQL使用PHP函數來建立資料庫連結。,13-2-1 新增ODBC系統資料來源,ODBC資料來源DSN(Data Source Na
2、me)是一種標準的資料庫介面,提供各類應用程式一致的資料庫存取方式:,13-2-2 開啟與關閉ODBC資料庫連結-說明,第一步就是使用PHP函數odbc_connect()開啟Access資料庫的連結,簡單的說,就是使用帳號和密碼登入Access資料庫。,13-2-2 開啟與關閉ODBC資料庫連結-開啟連結,在PHP程式開啟ODBC資料庫連結的函數是odbc_connect() :$link = odbc_connect($dsn, $name, $pass);,DSN資料來源名稱,登入Access的帳號與密碼,13-2-2 開啟與關閉ODBC資料庫連結-檢查連結,函數的傳回值如果成功傳回資源
3、識別碼,如果失敗傳回false,換句話說,程式可以使用if條件檢查是否成功開啟資料庫連結:if ($link != false) / ODBC資料庫連結成功! ,13-2-2 開啟與關閉ODBC資料庫連結-關閉連結,如果不再需要存取ODBC資料庫時,就可以使用odbc_close()函數釋放資料庫連結資源所佔用的記憶體:odbc_close($link);,Odbc_connect()傳回之資源變數,CH13-2-2,13-3 查詢資料表和取得欄位資訊,13-3-1 資料表查詢 13-3-2 取得資料表與欄位資訊,13-3-1 資料表查詢-執行資料表查詢,PHP程式可以使用odbc_exec(
4、)函數執行SQL指令查詢資料表: $result = odbc_exec($link , $sql);,開啟的資料庫連結,SQL指令字串,SQL查詢結果的記錄資料,稱為ODBC結果集合(ODBC Result Set),13-3-1 資料表查詢-取得記錄的欄位值,PHP程式可以使用odbc_result()函數或本章後的相關函數取得查詢結果的記錄資料,odbc_result()函數可以傳回目前記錄的指定欄位值:$no = odbc_result($result, 1); $name = odbc_result($result, “name“);,13-3-1 資料表查詢-釋放結果集合佔用的記憶
5、體,當不再需要查詢結果的記錄資料時,PHP程式記得自行釋放佔用的記憶體,以免浪費伺服器的寶貴資源。PHP程式是使用odbc_free_result()函數釋放佔用的記憶體: odbc_free_result($result);,CH13-3-1,13-3-2 取得資料表與欄位資訊,PHP提供ODBC相關函數可以取得資料表和欄位資訊,其相關函數的說明:,CH13-3-2,13-4 取得資料表的記錄資料,13-4-1 讀取指定的記錄資料 13-4-2 將讀取的指定記錄存入陣列 13-4-3 使用HTML表格顯示查詢結果,13-4-1 讀取指定的記錄資料- odbc_fetch_row()函數,PH
6、P的odbc_fetch_row()函數可以讀取指定的記錄,事實上,它並沒有真的讀取,只是移動記錄指標到指定的記錄: odbc_fetch_row($result, 2);,查詢結果的紀錄資料,記錄編號,從1開始,成功傳回true或失敗傳回false,13-4-1 讀取指定的記錄資料-讀取欄位資料,odbc_fetch_row()函數並沒有真正讀取記錄,需要配合odbc_result()函數才能取得這筆記錄的欄位值:echo “第2筆記錄的學號: “.odbc_result($result, “stdno“); echo “第2筆記錄的姓名: “.odbc_result($result, “n
7、ame“);,欄位名稱,13-4-1 讀取指定的記錄資料-顯示記錄資料,如果odbc_fetch_row()函數沒有指定第2個參數的記錄編號,函數是讀取下一筆記錄,換句話說,配合while迴圈就可以讀取剩下的記錄資料:while (odbc_fetch_row($result) $stdno = odbc_result($result, “stdno“);$name = odbc_result($result, “name“); ,CH13-4-1,13-4-2 將讀取的指定記錄存入陣列-odbc_fetch_into()函數,odbc_fetch_into()函數可以將指定記錄的欄位資料存入
8、一維索引陣列: odbc_fetch_into($result, $row, 2);,儲存紀錄的陣列變數,記錄編號,從1開始,成功傳回true或失敗傳回false,13-4-2 將讀取的指定記錄存入陣列-顯示欄位值,當odbc_fetch_into()函數讀取成功,$row陣列變數儲存的是這筆記錄的欄位資料,索引值是從0開始,以此例是前2個欄位: echo “第2筆記錄的學號: “. $row0; echo “第2筆記錄的姓名: “.$row1;,13-4-2 將讀取的指定記錄存入陣列-顯示記錄資料,如果odbc_fetch_into()函數沒有指定最後一個參數的記錄編號,就可以配合while
9、迴圈就可以讀取剩下的記錄資料: while ($total_fields = odbc_fetch_into($result, $row) echo “;for ($i = 0; $i “.$row$i.“;echo “; ,CH13-4-2,13-4-3 使用HTML表格顯示查詢結果,如果需要使用表格顯示查詢結果的記錄資料,PHP的odbc_result_all()函數預設使用HTML表格標籤顯示查詢結果的記錄資料,換句話說,在PHP程式並不需要自已使用HTML標籤編排記錄,就可以使用表格顯示記錄資料: $total_records = odbc_result_all($result, “border=1“),查詢結果的紀錄資料,標籤,傳回紀錄數,CH13-4-3,13-5 ODBC操作的錯誤處理,PHP提供ODBC操作的錯誤函數取得進一步的錯誤資訊,相關函數的說明,:,CH13-5,