数据访问......单条件查询与多条件查询

一. 将数据库数据访问封装成类

<?php
class DB
{
  public $host = "localhost";  //服务器地址
  public $uid = "root";        //用户名
  public $pwd = "123";         //密码
  //执行SQL语句,返回相应结果的方法
  //$sql代表要执行的SQL语句,$type代表SQL语句类型;0代表查询,1代表其他;$db代表要操作的数据库.
  function Query($sql,$type=0,$db="mydb")    //默认为查询语句,操作的数据库为"mydb".
  {
    //1.造连接对象
    $dbconnect = new MySQLi($this->host,$this->uid,$this->pwd,$db);
    //2.判断是否出错
    !mysqli_connect_error() or die("连接失败!");
    //3.执行SQL语句
    $result = $dbconnect->query($sql);
    //4.判断是查询语句还是其他语句,若是查询语句则返回二维数组,否则返回true or false
    if($type==0)
    {
      return $result->fetch_all();
    }
    else 
    {
      return $result;
    }
  }
}
二. 单条件查询
<?php
include("DB.class.php");
$db=new DB();
$cx="";                     //先定义变量,方便下面使用
$value="";
if(!empty($_POST["name"])) //判断传过来的name值是否为空 
{
  $name=$_POST["name"];
  $cx=" where Name like '%{$name}%'"; //查询字符串,注意where前面加空格,否则会出错
  $value=$name;
}
?>
<h1>汽车查询页面</h1>
<form action="" method="post"> <!--在哪个页面显示就提交到哪个页面,若为空就提交到当前页面-->
  <div>请输入名称:
    
<input type="text" name="name" value="<?php echo $value; ?>" />&nbsp;<!--点击查询后,查询关键字仍显示,可将value值设为$_post["name"]-->
     <input type="submit" value="查询" />   </div> </form> <br /> <table width="100%" border="1" cellpadding="0" cellspacing="0">   <tr>     <td>代号</td>     <td>汽车名称</td>     <td>价格</td>     <td>油耗</td>     <td>功率</td>   </tr>
<?php
$sql="select * from Car".$cx;
$attr=$db->Query($sql); //只传一个参数sql,默认$type=0,$db="mydb"
foreach($attr as $v)
{
  //处理Name,让关键字特殊显示,可用替换字符串
  //$rp="<mark>{$value}</mark>";                 //查询关键字加上Mark标签
  $rp="<span style='color:red'>{$value}</span>"; //查询关键字加上span标签,通过span标签更改样式
  $str=str_replace($value,$rp,$v[1]);            //将$v[1]中的$value用$rp替换成为新字符串存在变量$str里
  echo "<tr>
    <td>{$v[0]}</td>
    <td>{$str}</td>
    <td>{$v[7]}</td>
    <td>{$v[4]}</td>
    <td>{$v[5]}</td>
    </tr>";    
}
?> 
</table>

三. 多条件查询

先将多个条件设定为恒等式,再判断条件是否为空,再拼接查询语句,注意条件前面加空格


<h1>汽车查询页面</h1>
<?php
    include("DB.class.php");
    $db=new DB();    
    $vn="";       //花括号里面的变量必须在外面先定义才能在下面继续引用,否则会报错:未定义变量
    $vb="";
    $tj1= "1=1";  //条件1的判断
    $tj2 = "1=1"; //条件2的判断
    if(!empty($_POST["name"]))  //判断: 若传过来的name不为空 
    {
        
        $tj1=" Name like '%{$_POST['name']}%'";  //注意Name前面的空格
        $vn=$_POST["name"];
    }
    if(!empty($_POST["brand"]))   //有几个条件就判断几次 
    {
        
        $tj2=" Brand ='{$_POST['brand']}'";  
        $vb=$_POST["brand"];
    }
    $cx=" where {$tj1} and {$tj2}";
?>
<form action="" method="post">
    <div>请输入名称:
         <input type="text" name="name" value="<?php echo $vn; ?>" /> &nbsp;
         系列: 
         <input type="text" name="brand" value="<?php echo $vb ?>" /> &nbsp;
         <input type="submit" value="查询" />
    </div>
</form>
<br />
<table width="800"  border="1" cellpadding="0" cellspacing="0">
    <tr>
        <td>代号</td>
        <td>汽车名称</td>
        <td>系列</td>
        <td>价格</td>
        <td>油耗</td>
        <td>功率</td>
    </tr>
    <?php
    $sql="select * from Car".$cx;
    $attr=$db->Query($sql);     //只传一个参数sql,默认$type=0,$db="mydb"
    foreach($attr as $v)
    {
        //处理Name
        //$rp="<mark>{$value}</mark>";   //查询关键字加上Mark标签,突出关键字
        $rp1="<span style='color:red'>{$vn}</span>";   //查询关键字加上span标签,通过span标签更改样式
        $rp2="<span style='color:green'>{$vb}</span>";
        $str1=str_replace($vn,$rp1,$v[1]);
        $str2=str_replace($vb,$rp2,$v[2]);
        echo "<tr>
                <td>{$v[0]}</td>
                <td>{$str1}</td>
                <td>{$str2}</td>
                <td>{$v[7]}</td>
                <td>{$v[4]}</td>
                <td>{$v[5]}</td>
        </tr>";    
    }
    ?>    
</table>   
    

 
posted @ 2016-05-11 19:57  魅影星魂  阅读(443)  评论(0编辑  收藏  举报