アルツの備忘録

最近、年のせいで物忘れが激しい。
そこで、いろんなことをここに記録して行きたいと思います。

PHP + PEAR + ODBC + Access DB の実験 2

2008年01月30日 21時05分56秒 | PHP
■SELECT の結果を2次元配列で返す。

<呼び出し php>
<?php  
  $sql="select * from seiseki ";  
  //print $sql;
  $Data = LoadDatabase4( "phptest",$sql, "EUC_JP", "SJIS" );
if ($Data=="") {		
	print(" ※検索データがありません!!");
	return;	 
  }	
  //表示処理
  $i=0;
  $cnt=0;
  print("<TABLE BORDER='1' align=center cellspacing=1 cellpadding=5>");
  for ($cnt=0;$cnt<count($Data);$cnt++){	 
	// データ表示
	if ($cnt==0) {
		print("<TR bgcolor= '#ccff99' align=center>"); 
	 }else{
		print("<TR>");
	}   
    for ($i=0;$i<count($Data[$cnt]);$i++){	  
	  if ($i==1){
	     //print("<TD style=width:5 >");
		 print("<TD>");
	   }else{
	     print("<TD>");
	  }
      print($Data[$cnt][$i]."<br>");
      print("</TD>");
    }
	print("</TR> \n");
  }
  print("</TABLE>");	
}
?>

<LoadDatabase4関数>

//-- LoadDatabase4 ---------------------------------------------
// データベースの内容を2次元配列に読み込む。
// 項目名を最初のレコードに入れる。
function LoadDatabase4(	$db_name,$sql,$encoding = "EUC_JP",$s_encoding = "SJIS"  ) {
  require_once("DB.php");		//pearのdbクラス
  $dsn="odbc://$db_name";	        //DSNの指定
  $db = DB::connect($dsn);		//DB接続
  if (DB::isError( $db )) {
       echo "DB接続エラー : " . DB::errorMessage( $db ) . "<BR>\n";
  	   exit;
   }
  //SQLを実行
  $sql=mb_convert_encoding($sql, $s_encoding, $encoding);
  $result = $db->query($sql);
  //エラーチェック
  if (DB::isError($result)) {
	   echo("<BR>".$result->getMessage());
	   // ResultSet開放
       $result->free();
       // DB接続終了
       $db->disconnect();
       return false;	
  }

  //配列データ編集
  $i=0;
  $x=0;
  $cnt=0;
  // 項目名編集 
  while($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { 
  
	if ($cnt==0){
		$cName=array_keys($row);
		for ($x=0;$x<count($cName);$x++){
		  $data[0][$x]=mb_convert_encoding($cName[$x], $encoding, $s_encoding);
		} 
		$cnt++;
	}
	
	// データ編集
    while($i < $result->numCols()) { 	  
      $data[$cnt][$i]=mb_convert_encoding($row[$cName[$i]], $encoding, $s_encoding);  
      $i++;
    }
    $i=0;
    $cnt++;
  }

  // ResultSet開放
  $result->free();
  // DB接続終了
  $db->disconnect();
  //読み取り結果を返す
  if ($cnt==0){
      return false;
	}else{
      return $data; 
   }   
}


最新の画像もっと見る

コメントを投稿