一、数据库的封装和引用
之前写代码都是通过mysql取结果写的,这样写的缺点是每次要用数据时都需要写sql语句,并且要写很多份,而且当数据库换了,或者密码改了就需要修改每一个文件里的和mysql有关的参数,结果会很复杂。下面就把数据库的操作封装成一个类,每一次操作的时候去调用封装的类。
以后就用封装类的方法写,防止换数据库、换电脑、或者是放到服务器上以后直接从封装的类里面更改数据库名称,用户名、密码等。就不需要改页面里的内容了。
1.查询语句
第1步:建一个封装类的文件DBDA.class.php下面的语句是从自己封装类里面复制来的
<?php //建一个封装类的文件DBDA.class.php class DBDA//定义一个类,类名为DBDA { public $host="localhost";//4个比较常用的参数:服务器地址 public $uid="root";//用户名 public $pdw="";//密码 public $dbname="306";//数据库名称 //封装方法 //1.返回二维数组的方法 *给一个sql语句,返回执行的结果 用户指定的sql语句 $sql用户给的语句类型,0代表增删改,1代表查询。一般查询使用的比较多,让$type的默认值为1.如果是增删改再改$type的值。 $arr数组返回查询的结果,如果是查询,返回二维数组。如果是增删改,返回$result。
返回数组函数 function Query($sql,$type=1) { //造连接对象 $db = new MySQLi("$this->host","$this->uid","$this->pdw","$this->dbname"); //执行sql语句 $result = $db->query("$sql"); //从结果集对象里取数据。查询单独做一个方法,其它做另一个方法。 if($type==1)//如果是查询 { return $result->fetch_all();//返回查询的二维数组 } else//如果是增删改 { return $result;//返回$result } }
//返回字符串的方法
public function StrQuery($sql,$type=1)
{
$db = new MySQLi($this->host,$this->uid,$this->password,$this->dbname);
$r = $db->query($sql);
if($type==1)
{
$attr = $r->fetch_all();
$str = "";
foreach($attr as $v)
{
$str .= implode("^",$v)."|"; //拼接数组为字符串 $ttr.= implode("^",$v)."|" 是$str=$str.implode("^",$v)."|" .=和+= -=用法一样
}
return substr($str,0,strlen($str)-1); //截取字符串:最后的拼接符不显示
}
else
{
return $r;
}
}
?>
第2步:将封装的类引用到页面中
<?php require "DBDA.class.php";//将封装的类引入此页面 $db = new DBDA();//新建一个对象 $sql = "select * from info"; $arr=$db->Query($sql);//第2个参数不写的话就是查询,因为默认值是1.
$db->Query($sql,0) //有参数0就表示是增删改语句
?>