本人新接触php 项目需要。两个数据库的一些sql语句是不相同的 ,例如分页sql语句等,但是基本的查询 修改语句是相同的。现在想请有经验的前辈说说 对于这种情况的处理思路。将两种数据库不相同的sql语句挑出来 分别用不同方法 还是?

解决方案 »

  1.   

    糗了,发帖一分钟后发现有 adodb有分页函数,,,
     人气不足呀  送分了。。
      

  2.   

    不光是分页, 不同的数据库之间有很多语句用法是不一样的,所以你可能需要在写SQL语句是针对不同的数据库写
      

  3.   

    谢谢 现在根据数据库分别写不同的sql。
      

  4.   

    楼上很多好意见啊!
    我建议你将数据库的相关操作封装到一个类里
    在需要时直接new就是了,然后将sql语句传进去就是
    conn.php<?php
    /*
    *conn.php
    */
    class Db
    {
    var $conn;
    var $error; function Db($host="localhost",$user="root",$pass="123456",$db="db_name")
    {
      if(!$this->conn=mysql_connect($host,$user,$pass))
      die("can't connect to mysql sever");
      mysql_select_db($db,$this->conn);
      mysql_query("SET NAMES 'utf8'");
    } function getError()
    {
       return addslashes($this->error);
    } function execute($sql)
    {
       if(mysql_query($sql,$this->conn))
       { return true;}else{
        $this->error=mysql_error();
        return false;
       }
    } function findCount($sql)
    {
        $result=mysql_query($sql);
        return mysql_num_rows($result);
    } function findBySql($sql)
    {
        $array=array();
        $result=mysql_query($sql);
        $i=0;
        while($row=mysql_fetch_assoc($result))
           {
          $array[$i]=$row; 
       $i++;
           }
        return $array;
    } function toExtJson($table,$start=0,$limit=10,$cons="")
    {
       $sql=$this->generateSql($table,$cons);
       $totalNum=$this->findCount($sql);
       $result=$this->findBySql($sql." LIMIT ".$start." ,".$limit);
       $resultNum = count($result);
      $str="";
      $str.= "{";
      $str.= "'totalCount':'$totalNum',";
      $str.="'rows':";
      $str.="[";
      for($i=0;$i<$resultNum;$i++){
       $str.="{"; 
       $count=count($result[$i]);
       $j=1;
       foreach($result[$i] as $key=>$val)
       {
       if($j<$count)
       {
       $str.="'".$key."':'".$val."',";
       }
       elseif($j==$count)
       {
       $str.="'".$key."':'".$val."'";
       }
       $j++;
                }
       
       $str.="}";
       if ($i != $resultNum-1) {
                 $str.= ",";
             }
      }
      $str.="]";
      $str.="}";
      return $str;  
    } function generateSql($table,$cons)
    {
       $sql="";
       $sql="select * from ".$table;
       if($cons!="")
       {
       if(is_array($cons))
       {
         $k=0;
         foreach($cons as $key=>$val)
         {
      if($k==0)
      {
      $sql.="where '";
      $sql.=$key;
      $sql.="'='";
      $sql.=$val."'";
      }else
      {
      $sql.="and '";
      $sql.=$key;
      $sql.="'='";
      $sql.=$val."'";
     }
       $k++;
         }
       }else
       {
        $sql.=" where".$cons;
       }
       }
       return $sql;
    }
    }
    ?>
    上面是封装的数据库类
    你在页面中可以这样用
    index.php<?php
    require_once("conn.php"); $db= new Db();//new数据库连接
    $pagenum=6;   //分页参数
    $sql_news = "SELECT * FROM `db_news`";
    $results = $db->findBySql($sql_news);

    require_once("temp/index.htm");
    ?>这样的就不错啊!如果两个数据库你就在new数据库时将数据库的名字传进去!你参考下!呵呵
      

  5.   

    mysql比Oracle功能强了很多!一般Oracle里的sql语句可以在mysql中直接用,但是mysql中的一些就不行!
    比如嵌套的查询就不行
    SELECT name FROM bbc WHERE region = 
    (SELECT region FROM bbc WHERE name = 'Brazil') 
    你自己根据实际情况来看,然后写程序!呵呵,慢慢来
      

  6.   

    O(∩_∩)O~ 能给个adodb数据库相关操作类就好了  O(∩_∩)O哈哈~