/*--------------------------------------------------------*/
// 檔名 : sam_declare.php
// 功能 : 常數宣告
// 作者 : SAM
// 網址 : http://www.samblog.com.tw
/*--------------------------------------------------------*/
$Unsafe = lawless();
define('Unsafe', $Unsafe);
function lawless(){
if(! defined('SVS') OR ! defined('SVE')){
exit ('Unsafe');
}else{
if(SVS != "This is the works of sam." or
SVE != "If infringe, I wish to compensate for all any losses of sam unconditionally."
){
echo rawurldecode("SAM%E6%8F%90%E9%86%92%E6%82%A8%EF%BC%9A%E6%9C%AC%E8%BB%9F%E9%AB%94%E5%8F%97%E8%A8%BB%E8%91%97%E6%AC%8A%E6%B3%95%E4%BF%9D%E8%AD%B7%EF%BC%8C%E9%9C%80%E6%8E%88%E6%AC%8A%E6%89%8D%E8%83%BD%E4%BD%BF%E7%94%A8%EF%BC%8C%E6%82%A8%E7%9A%84%E8%A1%8C%E7%82%BA%E5%B7%B2%E7%B6%93%E9%81%95%E6%B3%95%EF%BC%8C%E6%9C%AC%E7%AB%99%E5%B7%B2%E5%B0%87%E6%82%A8%E7%9A%84IP%E8%A8%98%E9%8C%84%EF%BC%8C%0D%0A%09%09%09%09%09%20%20%20%E4%B8%A6%E4%BF%9D%E7%95%99%E6%B3%95%E5%BE%8B%E8%B2%AC%E4%BB%BB%EF%BC%8C%E8%AB%8B%E5%8B%BF%E5%86%8D%E5%98%97%E8%A9%A6%E7%8A%AF%E6%B3%95%EF%BC%8C%E6%84%9F%E8%AC%9D%E6%82%A8%E3%80%82%3Cbr%2F%3E%0D%0A%09%09%09%09%09%20%20%20SAM%20reminds%20you%3A%20This%20software%20is%20protected%20by%20the%20right%20law%20of%20the%20note%2C%20%0D%0A%09%09%09%09%09%20%20%20need%20to%20authorize%20and%20use%2C%20your%20behavior%20has%20already%20broken%20the%20law%2C%20our%20%0D%0A%09%09%09%09%09%20%20%20station%20write%20down%20IP%20of%20you%20already%2C%20keep%20law%20let%2C%20please%20don%27t%20is%20it%20%0D%0A%09%09%09%09%09%20%20%20violate%20the%20law%20to%20try%20again%2C%20thank%20you.
");
exit ();
}
}
}
?>
/*--------------------------------------------------------*/
// 檔名 : Config.php
// 功能 : 宣告資料庫各變數、常數
// 作者 : SAM
// 網址 : http://www.samblog.com.tw
/*--------------------------------------------------------*/
if(! defined('SVS') OR ! defined('SVE')){die("Unsafe");}
// Configuration.php可更改設定值
$sam_db['sql_driver'] = $Arsam_Db['Driver']; //資料庫類型
$sam_db['sql_host'] = $Arsam_Db['HostName']; //主機位址
$sam_db['sql_user'] = $Arsam_Db['UserName']; //帳號
$sam_db['sql_pass'] = $Arsam_Db['UserPassword']; //密碼
//資料庫編碼
if($Arsam_Db['Sql_Code'] =="utf-8"){
$sam_db['sql_code'] = "utf8";
}else{
$sam_db['sql_code'] = $Arsam_Db['Sql_Code'];
}
$sam_db['sql_database'] = $Arsam_Db['DbName']; //資料庫名稱
$sam_db['sql_tbl_prefix'] = $Arsam_Db['SQL_Table_Prefix']; //資料表前置字元
$sam_db['sql_use_escape'] = 0; //跳脫字元使用方式(0:關閉 1:有連線時(預設) 2僅字)
// 預設設定值
$sam_db['sql_tbl_type'] = 'MyISAM'; //資料表樣式
$sam_db['safe_mode'] = '1'; //啟用安全模組
$sam_db['sql_debug'] = '1'; //啟用除錯
$sam_db['sql_limit'] = '0'; //資料庫權限
$sam_db['sql_stop'] = '0'; //是否錯誤時停止所有程式
//未下定義常數解決方式(找到正確問題所在後可刪除)
/*
$Arsam_INFO['Sql_Force_New_Connection'] = '0';
$Arsam_INFO['Sql_Use_Shutdown'] = '0';
$Arsam_INFO['PHP_Ext'] = 'php'; //
*/
// 頁面測試(需刪除)
/*
echo '------------------------------------
sam_nucleus/sam_sql/config.php頁面
';
foreach($sam_db as $k => $v){
echo $k." : ".$v."
";
}
echo '------------------------------------
';
*/
?>
/*** [資料操作] *********************************************************************/
/*------------------------------------
//============ 基本操作 ==============
------------------------------------*/
// 連結資料庫主機
// 資料庫使用編碼
// 連結資料庫
// 新增資料錄
// 讀取資料錄
// 更新資料錄
// 關閉連結資料庫
/*------------------------------------
//============ 權限操作 ==============
------------------------------------*/
// 新增資料庫
// 新增資料表
// 刪除資料錄
/*------------------------------------
//============ 危險動作 ==============
------------------------------------*/
// 刪除資料表
// 刪除資料庫
/*** [動作控制設定] *********************************************************************/
/*** [資料格式判斷] *********************************************************************/
/*** [錯誤處理] *********************************************************************/
/*** [其它] *********************************************************************/
?>
/*--------------------------------------------------------*/
// 檔名 : sam_mysql.php
// 功能 : 資料庫運作類別,以MySQL語法為主
// 作者 : SAM
// 網址 : http://www.samblog.com.tw
/*--------------------------------------------------------*/
if(! defined('SVS') OR ! defined('SVE')){die("Unsafe");}
// PHP 版本宣告
define('MYSQL_LEGACY', ( PHP_VERSION < '4.3.0' ) ? TRUE : FALSE ); //檢查PHP版本
//簡查父系 sam_Db_Set 是否存在
if(class_exists("sam_Db_Set")){
//宣告 samSQL(MySQL) 類別繼承父系 sam_Db_Set
class samSQL extends sam_Db_Set {
/*--------------*/
// 各變數宣告 //
/*--------------*/
/*** [資料操作] *********************************************************************/
/*** [動作控制設定] *********************************************************************/
//跳脫字元使用方式
var $use_escape_class = 1; //(0:關閉 1:有連線時(預設) 2僅字串)
/*** [資料格式判斷] *********************************************************************/
/*** [錯誤處理] *********************************************************************/
/*** [其它] *********************************************************************/
/*----------------------*/
/* 函式 MySQL 語法 */
/*----------------------*/
/*** [資料操作] *********************************************************************/
/*------------------------------------
//============ 基本操作 ==============
------------------------------------*/
// 與資料庫主機連線
function connect(){
//判斷用獨占性連結或是短暫連結與PHP舊版
//若為開新連結或是舊版時
if ( $this->obj['sql_use_new_connection'] AND ! MYSQL_LEGACY ){
$this->obj['sql_connection'] = true ;
$this->connection_id = mysql_pconnect( $this->obj['sql_host'] , //主機
$this->obj['sql_user'] , //帳號
$this->obj['sql_pass'] , //密碼
$this->obj['sql_connection'] //連結
);
$this->sql_code();
}
//非開新連結(簡查版本)
else
{
//舊版本
if ( MYSQL_LEGACY )
{
$this->connection_id = mysql_connect( $this->obj['sql_host'] , //主機
$this->obj['sql_user'] , //帳號
$this->obj['sql_pass'] //密碼
);
$this->sql_code();
}
//4.3之後版本
else
{
$this->obj['sql_connection'] = false ;
$this->connection_id = mysql_connect( $this->obj['sql_host'] , //主機
$this->obj['sql_user'] , //帳號
$this->obj['sql_pass'] , //密碼
$this->obj['sql_connection'] //連結
);
$this->sql_code();
}
}
//因文字解析會造成所見即所得圖形,表格,等等無法正確運做,所以需更改
$this->use_escape_class = $this->obj['sql_use_escape']; //(0:關閉 1:有連線時(預設) 2僅字
//若沒接收到資料庫連線編號時
if ( ! $this->connection_id )
{
$this->fatal_error(); //致命錯誤
return FALSE; //回傳 fales(錯誤)
}else{
//正確連線資料庫後回傳
return TRUE; //回傳true(正確)
}
}
// 資料庫使用編碼
function sql_code(){
//檢查編碼,若無將編碼設為預設編碼(utf-8)
$code = (!$this->obj['sql_code']) ? 'utf-8' : strtolower($this->obj['sql_code']);
//資料庫加入編碼
//CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
mysql_query("SET NAMES '" . $code . "'");
mysql_query("SET CHARACTER SET $code COLLATE utf8_general_ci");
mysql_query("SET CHARACTER_SET_RESULTS='" . $code . "'");
////CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
}
// 連結資料庫
function select_db(){
// 判斷是否與資料庫主機連線
if($this->connect()){
//echo $this->connection_id."
";
//連結資料庫
if(mysql_select_db($this->obj['sql_database'], $this->connection_id)){
return TRUE;
}else{
// 判斷是否要新增資料庫[需注意權限問題]
$this->build_new_db();
return FALSE;
}
}else{
return FALSE;
}
}
// 新增資料錄(資料表名稱, 資料陣列(鍵:欄位,值:內容))
function insert_into_record($tab, $arr){
$this->select_db();
$this->handle_query($tab, $arr, 'insert');
//echo "insert_into_record內的query:
";
//echo "[".$query."]
";
$query = $this->no_check_query;
//echo "[".$query."]
";
$this->no_check_query = "";
$bulid_record = mysql_query($query, $this->connection_id);
if($bulid_record === FALSE){
//echo "[sam_sql]無法新增資料
";
$this->fatal_error(); //致命錯誤
return FALSE; //回傳 fales(錯誤)
}else{
//echo "[sam_sql]已新增資料
";
return TRUE;
}
$this->close_db();
}
// 讀取資料錄
//執行select運算
function sql_select($array){
if(array_true($array)){
//取出$array的鍵與
$array_k = array();
foreach($array as $k => $v){
$array_k[] = $k;
}
//$array導入 $this->select 陣列
if(in_array('select',$array_k)){$this->select['select'] = $array['select'];}
if(in_array('from',$array_k)){$this->select['from'] = $array['from'];}
if(in_array('join',$array_k)){$this->select['join'] = $array['join'];}
if(in_array('on',$array_k)){$this->select['on'] = $array['on'];}
if(in_array('where',$array_k)){$this->select['where'] = $array['where'];}
if(in_array('AND',$array_k)){$this->select['AND'] = $array['AND'];}
if(in_array('OR',$array_k)){$this->select['OR'] = $array['OR'];}
if(in_array('LIKE',$array_k)){$this->select['LIKE'] = $array['LIKE'];}
if(in_array('IN',$array_k)){$this->select['IN'] = $array['IN'];}
if(in_array('BETWEEN',$array_k)){$this->select['BETWEEN'] = $array['BETWEEN'];}
if(in_array('NOT_BETWEEN',$array_k)){$this->select['NOT_BETWEEN'] = $array['NOT_BETWEEN'];}
if(in_array('NULL',$array_k)){$this->select['NULL'] = $array['NULL'];}
if(in_array('order',$array_k)){$this->select['order'] = $array['order'];}
//query執行順序
if(in_array('select',$array_k)){
$this->hendel_sql_select($array['select']);
}
if(in_array('from',$array_k)){
$this->hendel_sql_from($array['from']);
}
if(in_array('join',$array_k)){
$this->hendel_sql_join($array['join']);
}
if(in_array('where',$array_k)){
$this->hendel_sql_where($array['where']);
}
if(in_array('order',$array_k)){
$this->hendel_sql_order($array['order']);
}
//執行mysql_query取出資料表資訊
$result = mysql_query($this->check_query, $this->connection_id);
if($result === FALSE){
echo '$result錯誤
';
echo 'SQL執行字串 : '.$this->check_query."
";
echo '連線ID: ' .$this->connection_id. "
";
echo mysql_errno() . " : " .mysql_error()."
";
}else{
}
//取出資料筆數
$num_rows = mysql_num_rows($result);
//取出欄位數量
$field_rows = mysql_num_fields($result);
//暫存資料錄
$data = mysql_fetch_assoc($result);
//資料表名欄位內容
$field_content =array(); //可指定單筆['資料表名']['欄名']['行數']
$field_contents =array(); //可用資料表方式全部秀出
//欄位名稱
$field_title_name =array(); //可指定單筆['資料表名']['欄名']['行數']
$field_title_names =array(); //可用資料表方式全部秀出
//先判斷有無 join 參數 (決定用何種方式陣列秀資料)
if(in_array('join',$array_k)){ //無 join 資料['資料表名']['欄名'] = 欄值
//取出資料表名稱
$table_name = array();
$table_num = array();
$table_name[] = $array['from'];
if(str_true($array['join'])){ //join 是字串
$table_name[] = $array['join'];
}
if(array_true($array['join'])){ //join 是陣列
$x=1;
foreach($array['join'] as $k => $v){
$table_name[$x] = $k;
$x++;
}
}
//取出各資料表的欄位數量
$all_table_num = 0; //所有資料表總合欄位數量
$table_fields_name = array();
$all_table_fields = array();
$all_table_name = array();
//請參考 $array['select'] 的類型與值
if($array['select'] != "*"){
//依條件取出
/*
if(){ //若為字串
}else{ //若為陣列
}
*/
}else{
//資料表名稱依總欄位數做陣列
$table_name_num = count($table_name); //資料表名稱陣列數量
for($i=0; $i<$table_name_num; $i++){
//每個資料表內欄位數量
$tb_fd_nuw = $this->get_field_num($table_name[$i]);
for($j=0; $j<$tb_fd_nuw; $j++){
$all_table_name[] = $table_name[$i];
}
}
/***** 以下錯誤 *****//*
//依序取出資料表欄位名稱$table_name[$x]
foreach($table_name as $k => $v ){
$table_fields_name[] = $this->get_field_name($v);
$all_table_name[] =
}
foreach($table_fields_name as $k => $v ){
foreach($v as $k1 => $v1 ){
$all_table_fields[]=$v1;
}
}
*/
}
foreach($all_table_fields as $k => $v){
echo $k.".".$v."
";
}
echo '
';
if( $num_rows>0 ){//若有資料
//若資料錄僅一筆時(陣列)
if( $num_rows==1 ){
//將資料錄轉換成欄位陣列
mysql_data_seek($result,0);
$fields = mysql_fetch_array($result);
//資料表內容(一維陣列用)
for($y=0; $y<$field_rows; $y++){ //位移欄位用
$field_title = mysql_field_name($result,$y);
$field_title_names[] = $field_title;
$field_contents[] = $fields[$y] ;
//echo " $fields[$y]
";
}
//資料表內容(多維陣列用)
for($y=0; $y<$field_rows; $y++){ //位移欄位用
$field_title = mysql_field_name($result,$y);
$field_title_name[$all_table_name[$y]][] = $field_title;
$field_content[$all_table_name[$y]][$field_title] = $fields[$y] ;
//echo " $fields[$y]
";
}
//列出陣列測試是否為row['欄名'] = 內容
/*
echo "單筆資料:
";
foreach($field_contents as $k => $v){
echo $k." = ".$v."
";
}
*/
}//若資料錄為多筆資料時(多維陣列['欄名']['第n筆'])
else{
//資料表欄位名稱(多維陣列用)
for($i=0; $i<$field_rows; $i++){
$field_title = mysql_field_name($result,$i);
$field_title_name[$all_table_name[$i]][] = $field_title;
}
//資料表欄位名稱(一維陣列用)
for($i=0; $i<$field_rows; $i++){
$field_title = mysql_field_name($result,$i);
$field_title_names[] = $field_title;
}
for($x=0; $x<$num_rows; $x++){
//$data = mysql_fetch_assoc($result,$x);
if($x <= $num_rows){//位移資料用
//變換作用資料錄位置
mysql_data_seek($result,$x);
//將資料錄轉換成欄位陣列
$fields = mysql_fetch_array($result);
//資料表內容(多維陣列用)
for($y=0; $y<$field_rows; $y++){ //位移欄位用
$field_title = mysql_field_name($result,$y);
//$field_title_name[] = $field_title;
$field_content[$all_table_name[$y]][$field_title][] =$fields[$y] ;
//echo " $fields[$y]
";
}
//資料表內容(一維陣列用)
for($y=0; $y<$field_rows; $y++){ //位移欄位用
$field_title = mysql_field_name($result,$y);
//$field_title_name[] = $field_title;
$field_contents[] =$fields[$y] ;
//echo " $fields[$y]
";
}
//echo "
";
}
}
}
}else{
echo "查無資料";
return false;
}
}else{ //無 join 資料['欄名'] = 欄值
//列出全部資料(可完整列出)
if( $num_rows>0 ){//若有資料
//若資料錄僅一筆時(陣列)
if( $num_rows==1 ){
//將資料錄轉換成欄位陣列
mysql_data_seek($result,0);
$fields = mysql_fetch_array($result);
//資料表內容(一維陣列用)
for($y=0; $y<$field_rows; $y++){ //位移欄位用
$field_title = mysql_field_name($result,$y);
$field_title_names[] = $field_title;
$field_contents[] = $fields[$y] ;
//echo " $fields[$y]
";
}
//資料表內容(多維陣列用)
for($y=0; $y<$field_rows; $y++){ //位移欄位用
$field_title = mysql_field_name($result,$y);
$field_title_name[$field_title] = $field_title;
$field_content[$field_title] = $fields[$y] ;
//echo " $fields[$y]
";
}
//列出陣列測試是否為row['欄名'] = 內容
/*
echo "單筆資料:
";
foreach($field_contents as $k => $v){
echo $k." = ".$v."
";
}
*/
}//若資料錄為多筆資料時(多維陣列['欄名']['第n筆'])
else{
//資料表欄位名稱
for($i=0; $i<$field_rows; $i++){
$field_title = mysql_field_name($result,$i);
$field_title_name[$field_title] = $field_title;
$field_title_names[] = $field_title;
}
for($x=0; $x<$num_rows; $x++){
//$data = mysql_fetch_assoc($result,$x);
if($x <= $num_rows){//位移資料用
//變換作用資料錄位置
mysql_data_seek($result,$x);
//將資料錄轉換成欄位陣列
$fields = mysql_fetch_array($result);
//資料表內容(多維陣列)
for($y=0; $y<$field_rows; $y++){ //位移欄位用
$field_title = mysql_field_name($result,$y);
//$field_title_name[] = $field_title;
$field_content[$field_title][] =$fields[$y] ;
//echo " $fields[$y]
";
}
//資料表內容(一維陣列)
for($y=0; $y<$field_rows; $y++){ //位移欄位用
$field_title = mysql_field_name($result,$y);
//$field_title_name[] = $field_title;
$field_contents[$x][$y] =$fields[$y] ;
//echo " $fields[$y]
";
}
//echo "
";
}
}
//測試多維陣列 $field_contents
//註:基本上沒問題,但兩個資料表合併時??
// 攔位名稱可能會重覆==>
// 需做合併後簡查重覆的欄位名稱$array['欄位名'][第幾筆]
/*
echo "測試多維陣列 $field_contents
";
echo $field_contents['description'][0]."
";
*/
}
}else{
//echo "查無資料";
return false;
}
}
//將取得的資料表資訊導入起始陣列
/*
//資料欄位資訊
var $sam_fields = array(); //合併所有資料表名稱在一維陣列
//資料欄位資訊
var $sam_field = array(); //能指定資料表名稱取出欄位
//資料錄數量(筆數)
var $sam_num = 0;
//資料錄(資料表所有內容)
var $sam_record = array(); //多維陣列(名稱)
//資料錄(資料表所有內容)
var $sam_records = array(); //一維陣列(指標)
*/
$this->sam_field = ""; //清空資料欄位資訊
$this->sam_fields = ""; //清空資料欄位資訊
$this->sam_num = 0; //清空資料錄數量(筆數)
$this->sam_record = ""; //清空資料錄(資料表所有內容)
$this->sam_records = ""; //清空資料錄(資料表所有內容)
$this->sam_field = $field_title_name; //寫入資料欄位資訊
$this->sam_fields = $field_title_names; //寫入資料欄位資訊
$this->sam_num = $num_rows; //寫入資料錄數量(筆數)
$this->sam_record = $field_content; //寫入資料錄(資料表所有內容)
$this->sam_records = $field_contents; //寫入資料錄(資料表所有內容)
}else{
return FALSE;
}
}
// 更新資料錄
function sql_update($tab, $arr, $condition){
$this->select_db();
$this->handle_query($tab, $arr, 'update', $condition);
$query = $this->check_query;
//echo $query."
";
$result = mysql_query($query, $this->connection_id);
if($result === FALSE){
$this->fatal_error(); //致命錯誤
}
$this->close_db();
}
// 關閉連結資料庫
function close_db(){
mysql_close($this->connection_id);
}
/*------------------------------------
//============ 權限操作 ==============
------------------------------------*/
// 新增資料庫(未攥寫權限)
function build_new_db(){
if($this->connect() and $this->obj['sql_database'] != ""){
$query = "CREATE DATABASE IF NOT EXISTS ".$this->obj['sql_database'];
$build_db = mysql_query($query, $this->connection_id);
if($build_db === FALSE){
$this->fatal_error(); //錯誤訊息
return FALSE;
}else{
return TRUE;
}
$this->close_db();
}else{
$this->fatal_error(); //錯誤訊息
$this->close_db();
}
}
// 新增資料表
function build_new_table($new_table){
//檢查table_name是否為陣列且非空值
$this->select_db();
$this->build_db_table = $new_table;
if(is_array($this->build_db_table) and count($this->build_db_table)){
//連結資料庫
$this->select_db();
//取出陣列值並編輯query字串($table_name[0]為資料表名稱,$table_name[]其它為欄位設定)
$array_number = count($this->build_db_table); //取出元素個數
//建立新增資料表query字串(未檢驗)
$query = "CREATE TABLE IF NOT EXISTS " . $this->obj['sql_tbl_prefix'] . $this->build_db_table[0] . "(";
for($x=1; $x<$array_number; $x++){
$query = $query.$this->build_db_table[$x] ;
}
$query .= ") TYPE=" . $this->obj['sql_tbl_type'] . ";";
//echo '$query : '.$query."
";
//跳脫query字串
/*
if($this->use_check != 0){
$this->no_check_qurey = $query;
$this->check_qurey = $this->escape_query($this->no_check_qurey);
$query = $this->check_qurey;
}
*/
//mysql_qurry操作
$build_tables = mysql_query($query , $this->connection_id);
if($build_tables === FALSE){
$this->fatal_error(); //錯誤訊息
return FALSE;
}else{
return TRUE;
}
//將query設為空值
$query = "";
$this->no_check_qurey = "";
$this->check_qurey = "";
}
$this->close_db();
}
// 刪除資料錄($tab:資料表名 $condition陣列[where鍵 = 值])
function sql_delete($tab, $condition=FALSE){
//連結資料庫
$this->select_db();
//若有$condition 才動作(判斷要刪哪一筆,避免全刪)
if(array_true($condition)){
//檢查是否有資料表
if($this->search_table_name($tab)){
//query字串(記的加上資料表前置字元)
$query = "DELETE FROM " . $this->obj['sql_tbl_prefix'] . $tab;
//取出陣列鍵:值
foreach($condition as $k => $v){
$query .= " WHERE $k = {$v}";
}
//執行mysql_query
$result = mysql_query($query, $this->connection_id);
return TRUE;
}
}else{
return FALSE;
}
$this->close_db();
}
/*------------------------------------
//============ 危險動作 ==============
------------------------------------*/
// 刪除資料表
// 刪除資料庫
/*** [動作控制設定] *********************************************************************/
//取得資料庫列表
function get_db_list(){
$dbs = mysql_list_dbs($this->connection_id);
$dbname = array();
if(!is_resource($dbs)){
}else{
for($i=0; $iconnection_id);
if(! is_resource($tables)){
return FALSE;
}else{
$num = mysql_num_rows($tables);
if($num == 0){
return FALSE;
}else{
for($j=0; $j<$num;$j++){
$tablename = mysql_table_name($tables, $j);
$this->all_tables[] = $tablename;
}
return $this->all_tables;
}
}
}
//取出資料表欄位數量
function get_field_num($table){
$this->select_db();
$query = "SELECT * FROM " . $this->obj['sql_tbl_prefix'] .$table ;
$rs = mysql_query($query, $this->connection_id);
$num = mysql_num_fields($rs);
return $num;
}
//取得資料表欄位名稱
function get_field_name($table){
$this->select_db();
$query = "SELECT * FROM " . $this->obj['sql_tbl_prefix'] .$table ;
$rs = mysql_query($query, $this->connection_id);
$num = mysql_num_fields($rs);
$field_name = array();
for($x=0; $x<$num; $x++){
$field_name[] = mysql_field_name($rs,$x);
}
return $field_name;
}
//檢查資料表是否存在 array_contrast_str
function search_table_name($tab){
//取得資料庫內所有資料表名稱
$table_name_array = array();
$table_name_array = $this->get_table_list($this->obj['sql_database']);
$tab = $this->obj['sql_tbl_prefix'] . $tab;
if(array_contrast_str($table_name_array, $tab, $dim=FALSE)){
return TRUE;
}else{
return FALSE;
}
}
/*** [資料格式判斷] *********************************************************************/
/*** [錯誤處理] *********************************************************************/
function fatal_error(){
$this->error = mysql_error();
$this->error_no = mysql_errno();
echo $this->error_no.":".$this->error."
";
if($this->obj['sql_stop'] == 1){
exit ();
}
}
/*** [其它] *********************************************************************/
// 自動執行
function samSQL(){
// 將sql_driver 轉換成小寫 mysql
$this->obj['sql_driver'] = (!$this->obj['sql_driver']) ? 'mysql' : strtolower($this->obj['sql_driver']);
//若非使用 mysql 為資料庫語法時,退出執行
if($this->obj['sql_driver'] != 'mysql'){
exit ("選用的資料庫語言錯誤!!");
}
}
//mysql跳脫字串(將魔術字元加/)
function escape_query($query){
if($this->use_escape_class == 0){
return $query;
}elseif($this->use_escape_class == 2){
$escape_str = mysql_escape_string($query);
return $escape_str;
}else{
$escape_str = mysql_real_escape_string($query,$this->connection_id);
return $escape_str;
}
}
}
}
?>
/*--------------------------------------------------------*/
// 檔名 : ArSam_Db_Class.php
// 功能 : 操作資料庫類別,不含任何資料庫語法(ODBC,MySQL,MsSQL等)
// 作者 : SAM
// 網址 : http://www.samblog.com.tw
/*--------------------------------------------------------*/
if(! defined('SVS') OR ! defined('SVE')){die("Unsafe");}
//查詢父系 MySQL 是否存在
if(class_exists("samSQL")){
class sam_DB_Class extends samSQL { //宣告sam_DB_Class類別繼承父系 samSQL
/*--------------*/
// 各變數宣告 //
/*--------------*/
/*** [資料操作] *********************************************************************/
//資料庫物件-陣列
var $vars = array(); //宣告 $vars 為陣
//sql執行-字串
var $str_query = "";
//通用連結資料庫編號-整數
var $connection_id = "";
/*** [動作控制設定] *********************************************************************/
/*** [資料格式判斷] *********************************************************************/
/*** [錯誤處理] *********************************************************************/
//錯誤訊息-字串
var $error = "";
//錯誤訊息代碼-
var $error_no = "";
/*** [其它] *********************************************************************/
/*------------------*/
/* 函式 SQL語法 */
/*------------------*/
/*** [資料操作] *********************************************************************/
/*------------------------------------
//============ 基本操作 ==============
------------------------------------*/
//將obj值指定為參數設定值
function DB(){
// Configuration.php可更改設定值
$this->obj['sql_driver'] = $this->vars['sql_driver']; //資料庫類型
$this->obj['sql_host'] = $this->vars['sql_host']; //主機位址
$this->obj['sql_user'] = $this->vars['sql_user']; //帳號
$this->obj['sql_pass'] = $this->vars['sql_pass']; //密碼
$this->obj['sql_code'] = $this->vars['sql_code']; //資料庫編碼
$this->obj['sql_database'] = $this->vars['sql_database']; //資料庫名稱
$this->obj['sql_tbl_prefix'] = $this->vars['sql_tbl_prefix']; //資料表前置字元
//sam_nucleus/sam_sqlconfig.php可更改值
$this->obj['sql_tbl_type'] = $this->vars['sql_tbl_type']; //資料表樣式
$this->obj['safe_mode'] = $this->vars['safe_mode']; //啟用安全模組
$this->obj['sql_debug'] = $this->vars['sql_debug']; //啟用除錯
$this->obj['sql_limit'] = $this->vars['sql_limit']; //資料庫權限
$this->obj['sql_stop'] = $this->vars['sql_stop']; //啟用錯誤時停止程式
//sam_nucleus/sam_sql/ArSam_Db_Set.php內的其它值
}
// 連結資料庫主機
function db_connect(){
$this->DB();
if($this->connect()){
return true;
}else{
return false;
}
}
// 連結資料庫
function db_select_db(){
$this->DB();
$this->select_db();
}
// 新增資料錄(資料表名,資料陣列[鍵:欄名,值:欄位內容])
function db_insert_into($tab,$arr){
$this->db_select_db();
$this->insert_into_record($tab,$arr);
}
// 讀取資料錄
function db_select($array){
$this->db_select_db();
$this->sql_select($array);
}
// 更新資料錄
function db_update($tab, $arr, $condition){
$this->db_select_db();
$this->sql_update($tab, $arr, $condition);
}
// 關閉連結資料庫
/*------------------------------------
//============ 權限操作 ==============
------------------------------------*/
// 新增資料庫
function build_db(){
$this->DB();
$this->build_new_db();
}
// 新增資料表
function build_table($new_table){
$this->DB();
$this->build_new_table($new_table);
}
// 刪除資料錄
function db_delete($tab, $condition=FALSE){
$this->DB();
$this->sql_delete($tab, $condition);
}
/*------------------------------------
//============ 危險動作 ==============
------------------------------------*/
// 刪除資料表
// 刪除資料庫
/*** [動作控制設定] *********************************************************************/
/*** [資料格式判斷] *********************************************************************/
/*** [錯誤處理] *********************************************************************/
/*** [其它] *********************************************************************/
// 自動執行
function sam_DB_Class(){
}
}
}
?>
Fatal error: Class 'sam_DB_Class' not found in /var/www/vhosts/rontai.com.tw/httpdocs/contact/sam_nucleus/config.php on line 18