用adodb类作数据库连接,支持多类型数据库(oracle和mysql)帮忙讨论 来者有分 本人新接触php 项目需要。两个数据库的一些sql语句是不相同的 ,例如分页sql语句等,但是基本的查询 修改语句是相同的。现在想请有经验的前辈说说 对于这种情况的处理思路。将两种数据库不相同的sql语句挑出来 分别用不同方法 还是? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 糗了,发帖一分钟后发现有 adodb有分页函数,,, 人气不足呀 送分了。。 不光是分页, 不同的数据库之间有很多语句用法是不一样的,所以你可能需要在写SQL语句是针对不同的数据库写 谢谢 现在根据数据库分别写不同的sql。 楼上很多好意见啊!我建议你将数据库的相关操作封装到一个类里在需要时直接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<?phprequire_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数据库时将数据库的名字传进去!你参考下!呵呵 mysql比Oracle功能强了很多!一般Oracle里的sql语句可以在mysql中直接用,但是mysql中的一些就不行!比如嵌套的查询就不行SELECT name FROM bbc WHERE region = (SELECT region FROM bbc WHERE name = 'Brazil') 你自己根据实际情况来看,然后写程序!呵呵,慢慢来 O(∩_∩)O~ 能给个adodb数据库相关操作类就好了 O(∩_∩)O哈哈~ 如何讓我學好php php如何实现主动发送消息到终端 帮忙看个函数 php是怎样防止注入的? 求一些常用函数 做过与FLASH交互的PHPER来帮我看看(给了我全部的分了) PHP不如ASP好使的三个地方 如何检测远程文件的大小 关于pdo引用传参,字段是不是不能当成参数传入? 关于DIRECTORY_SEPARATOR的问题 IE7的Session共享问题 如何将一个字符串写入到一个a.php文件中
人气不足呀 送分了。。
我建议你将数据库的相关操作封装到一个类里
在需要时直接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数据库时将数据库的名字传进去!你参考下!呵呵
比如嵌套的查询就不行
SELECT name FROM bbc WHERE region =
(SELECT region FROM bbc WHERE name = 'Brazil')
你自己根据实际情况来看,然后写程序!呵呵,慢慢来