本文实例讲述了php数据库操作model类。分享给大家供大家参考,具体如下:
该数据库操作类使用__call()方法实现了数据的查找功能。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
<?php
/*
作者 : shyhero
*/
define( "HOSTNAME" , "127.0.0.1" );
define( "USERNAME" , "root" );
define( "PASSWORD" , "" );
define( "DATANAME" , "class" );
class Model{
private $link ;
private $tableName ;
private $zd ;
private $method = array (
"where" => "" ,
"order" => "" ,
"limit" => "" ,
"group" => "" ,
"having" => ""
);
public function __construct( $tableName ){
$this -> tableName = $tableName ;
try {
$this -> link = mysqli_connect(HOSTNAME,USERNAME,PASSWORD,DATANAME);
mysqli_set_charset( $this -> link, "UTF8" );
} catch (Exception $e ){
echo "数据库连接失败" ;
}
$this -> desc();
}
public function __destruct(){
mysqli_close( $this -> link);
}
public function desc(){
$sql = " desc {$this -> tableName}; " ;
$res = mysqli_query( $this -> link, $sql );
$arr = mysqli_fetch_all( $res ,MYSQLI_ASSOC);
for ( $i = 0 ; $i < count ( $arr ); $i ++){
$brr [] = $arr [ $i ][ 'Field' ];
}
$this -> zd = $brr ;
return $brr ;
}
public function __call( $name , $value ){
$name = strtolower ( $name );
if ( array_key_exists ( $name , $this -> method)){
if ( $name == 'order' ){
$this -> method[ 'order' ] = " order by " . $value [0];
} elseif ( $name == 'group' ){
$this -> method[ 'group' ] = " group by " . $value [0];
} else {
$this -> method[ $name ] = " {$name} " . $value [0];
}
} else {
return "the method is not found!" ;
}
return $this ;
}
public function method(){
return " {$this -> method['where']} {$this -> method['order']} {$this -> method['limit']} {$this -> method['group']} {$this -> method['having']}; " ;
}
public function find( $a = "*" ){
if (in_array( "{$a}" , $this -> zd) || $a == "*" ){
$sql = "select {$a} from {$this -> tableName} {$this -> method()} " ;
} else {
$sql = "select * from {$this -> tableName}" ;
}
//return $sql;
$res = mysqli_query( $this -> link, $sql );
$arr = mysqli_fetch_all( $res ,MYSQLI_ASSOC);
return $arr ;
}
}
|
用法示例:
1
2
3
4
5
6
7
|
<?php
function __autoload( $className ){
require ( $className . ".class.php" );
}
$a = new Model( "stu" );
$a -> where( "name = 'zhu'" )->limit( "5,10" );
var_dump( $a -> find( "name" ));
|
希望本文所述对大家PHP程序设计有所帮助。