mysqlデータベース操作クラス、みんなで共有
[php]
/**
*db.class.php データベースオブジェクトを作成します
*
*@著者 Dick 417@668x.net
*@copyright http://blog.csdn.net/haibrother
*
**/
クラス Dick_Db{
パブリック $db_host = '' // ホストアドレス
;
パブリック $db_username = '' //データベース アカウント
;
Public $db_password = '' //データベースパスワード
;
Public $db_name = '' //データベース名
;
Public $link = '' //データベース接続オブジェクト
;
Public $debug = 1; //デバッグを有効にするかどうか、デフォルトは有効です
Public $pconnect = 0; //長い接続を有効にするかどうか、デフォルトはクローズです
Public $log_file = 'log/';//ログファイルディレクトリ
/**
*初期化情報
*@paramオブジェクト
**/
パブリック関数 __construct($config=''){
If(!is_object($config)){
$this->halt('データベース設定は間違っていません。確認してください!');
}
If(!empty($config)){
$this->db_username = $config->username;
$this->db_password = $config->password;
$ this-> db_name
}
$this->connect();
}
/**
* リンクを取得します
**/
パブリック関数 connect(){
$connect = $this->pconnect === 1?'mysql_pconnect':'mysql_connect';
If(!$this->link = @$connect($this->db_host,$this->db_username,$this->db_password)){
$this->halt('データベースに接続できません!');
}
mysql_set_charset('utf8',$this->link);
mysql_select_db($this->db_name,$this->リンク);
}
/**
*クエリ
*@param string $sql
*ブール値を返します
**/
パブリック関数クエリ($sql){
If(!$query = mysql_query($sql,$this->link)){
$message = date('Y-m-d H:i:s') '.$sql;
$this->write_log($message);
$this->halt('SQL エラー、確認してください!',$sql);
}
戻り $query
}
/**
*
*@param string $sql
*@param string $type
* mysql_fetch_assoc、mysql_fetch_array、mysql_fetch_row、mysql_affected_rows
*@配列を返す
*/
パブリック関数 fetch($sql,$type='assoc'){
$fetch_type = 'mysql_fetch_'.$type;
$query = $this->query($sql);
$result = $fetch_type($query);
$this->free_result($query);
$this->close();
$result を返します。
}
/**
*@param string $sql
*@配列を返す
**/
パブリック関数 DickFetch($sql,$type='assoc'){
$fetch_type = 'mysql_fetch_'.$type;
$query = $this->query($sql);
$rows=array();
while ($row=$fetch_type($query)) {
$rows[]=$row;
}
$this->free_result($query);
$this->close();
$rows を返します。
}
/**
*挿入の最後のIDを取得します
*@param string $sql
**/
パブリック関数 insert_id(){
return mysql_insert_id($this->link);
}
/**
*データベースオブジェクトリソースを解放します
**/
パブリック関数 free_result($query){
mysql_free_result($query) を返します。
}
/**
*データベース接続を閉じる
**/
パブリック関数 close(){
if($this->pconnect === 0) return mysql_close($this->link);
}
/**
* 整数は安全に処理され、0 以上の整数のみが返されます
*@param int
*@return int
**/
パブリック関数 numeric(& $variint){
if (!isset ($variint))
0を返します。
if (!is_numeric($variint))
0を返します。
//首字符0处理
$str_len = strlen($variint);
for ($i = 0; $i
if ($variint[$i] != '0')
壊す;
}
if ($i > 0 && $variint > 0) {
$variint = substr($variint, $i, $str_len);
$str_len = strlen($variint);
}
// デジタル安全处理
if ($str_len > 0) {
if (!preg_match("/^[0-9]+$/", $variint)) {
0を返します。
} その他 {
$variint = substr($variint, 0, 10);
//互換MYSQL中INT無記号最大值4294967295
$variint = ($variint > 4294967295) ? 4294967295 : $variint;
$variint を返します。
}
} その他 {
0を返します。
}
}
/**
*mysqlエラーを返す
**/
パブリック関数 error() {
return (($this->link) ? mysql_error($this->link) : mysql_error());
}
/**
*mysql errno を返す
**/
パブリック関数 errno() {
return intval(($this->link) ? mysql_errno($this->link) : mysql_errno());
}
/**
*SQLエラーログに書き込む
*@パラメータ文字列
*@param文字列型
**/
public function write_log($message='',$type='date'){
if(空($message)) falseを返します;
if(!in_array($type, array('date','month')))return false;
if(!is_dir($this->log_file)){
mkdir($this->log_file);
}
スイッチ ($type) {
ケース「月」:
$file = $this->log_file.date('Y-m').'.log';
壊す;
デフォルト:
$file = $this->log_file.date('Y-m-d').'.log';
壊す;
}
if(!file_exists($file)){
file_put_contents($file,'');
}
if(!is_readable($file)){
$this->halt($file.'- システム無权制限读操作!');
}
if(!is_writable($file)){
$this->halt($file.'-系统無权制限写操作!');
}
$contents = file_get_contents($file);
$add_message = ' -エラー:'.$this->error().' -Errno:'.$this->errno();
file_put_contents($file, $contents.$message.$add_message."n");
}
/**
* プログラムを終了します
*@param str $message
*@return print
**/
パブリック関数 halt($message='',$sql=''){
if($this->debug===1){
$error_get_last = error_get_last();
if($message) {
$errmsg = "システム情報: $messagenn";
}
$errmsg .= "時刻: ".date('Y-m-d H:i:s')."n";
$errmsg .= "スクリプト: ".$error_get_last['file']."nn";
if($sql) {
$errmsg .= "SQL: ".htmlspecialchars($sql)."n";
}
$errmsg .= "エラー: ".$this->error()."n";
$errmsg .= "Errno.: ".$this->errno();
echo "n";
echo "
";
エコー nl2br($errmsg);
出口();
}
}
/**
*プログラムテスト印刷
*@パラメータ文字列
*@return print
**/
パブリック関数 prf($param){
echo '
'; <br> print_r($param); <br> echo '';