已有40人关注
请教个问题 php开发到入门的19章 adodb
发表在PHP图书答疑 2009-10-10
是否精华
版块置顶:
<?php
/*数据库类
 */
include_once '../adodb5/adodb.inc.php';
class ado_operator{
/* 连接数据信息 */
private $Database = 'mysql';  //默认数据库驱动
private $Host = 'localhost'; //服务器地址
private $Dataname = 'db_shop'; //数据库名称
private $User = 'root'; //用户名
private $Pwd = 'root'; //密码
/* 操作数据库 */
private $conn = ''; //连接数据库
private $rst = ''; //查询结果集
private $error = ''; //错误信息
private $get_rows = 0; //结果集行数
private $get_fields = 0; //结果字段数
/*  构造函数  */
function __construct(){
$this->connection();
}
/*  析构函数  */
function __destruct(){

}
/*  连接数据库  */
function connection($Host = '',$User = '',$Pwd = '',$Dataname = ''){
if ('' == $Host){
$Host = $this->Host;
}
if ('' == $Dataname){
$Dataname = $this->Dataname;
}
if ('' == $User){
$User = $this->User;
}
if ('' == $Pwd){
$Pwd = $this->Pwd;
}
$this->conn = @ADONewConnection($this->Database);
@$this->conn->PConnect($Host,$User,$Pwd,$Dataname);
$this->conn->execute('set names gb2312');
return $this->conn;
}
/*  查询数据  */
function query_rst($sql){
if('' == $this->conn){
$this->connection();
}
$this->rst = $this->conn->execute($sql);
if(false == $this->rst){
$this->msg('查询语句错误!');
}
return $this->rst;
}
/* 添加数据  */
function add_rst($sql,$addarr){
if('' == $this->conn){
$this->connection();
}
$this->rst = $this->conn->execute($sql);
$this->insertSQL = $this->conn->getInsertSQL($this->rs,$this->addarr);
$this->conn->execute($this->insertSQL);
}
/* 更新数据  */
function update_rst($sql,$updatearr){
if('' == $this->conn){
$this->connection();
}
$this->rst = $this->conn->execute($sql);
$this->updateSQL = $this->conn->getUpdateSQL($this->rs,$this->updatearr);
$this->conn->execute($this->updateSQL);
}
/* 删除数据  */
function deldate_rst($sql){
if('' == $this->conn){
$this->connection();
}
$this->conn->execute($sql);
}
/* 返回结果集行数  */
function get_rows(){
$this->get_rows = $this->rst->RecordCount();
return $this->get_rows;
}
/* 返回结果集字段数  */
function get_fields(){
$this->get_fields = $this->rst->FieldCount();
return $this->get_fields;
}

/* 错误处理 */
function msg($err){
$this->error = $this->conn->ErrorMsg();
echo '<strong>数据库错误:'.$err.'。错误原因:'.$this->error.'</strong>';
}
}



?>


以上是19.9练习的代码:
这里的增加和修改使用到 了getupdatesql/getinsertsql函数
请问这样写有必要么?因为不用这两个函数 
$this->rst = $this->conn->execute([font color=#0000FF]$sql[/font]); 这句话也是可以实现修改或增加的呀?

还有就是 在修改或增加的时候的
$this->updateSQL = $this->conn->getUpdateSQL([font color=#FF0000]$this->rs[/font],$this->updatearr);

$this->rs 是不是写错了 还是应该是$this->rst  可能是我哪里理解有错还望解答。
分享到:
精彩评论 2
jeffbai
学分:0 LV1
2009-10-10
沙发
$this->rst = $this->conn->execute($sql); 如果这个sql语句是插入语句 那么有可能出现 2次相同记录进行插入 如果这条sql语句不是插入语句 那么有可能不能进行插入,例如表中数据为null?
$this->insertSQL = $this->conn->getInsertSQL($this->rs,$this->addarr);
$this->conn->execute($this->insertSQL);
jeffbai
学分:0 LV1
2009-10-10
板凳
<?php
include_once 'adodb5/adodb.inc.php';
class Ado_operator
{
/* 连接数据库 */
private $DataBase='mysql';
private $Host='localhost';
private $User='root';
private $Passwd='1';
private $Dataname='demo';

/* 操作数据库 */
private $conn='';
private $rst='';
private $error='';
private $get_rows=0;
private $get_fields=0;
function __construct()
{
$this->connection();
}
function connection($Host='',$User='',$Passwd='',$Dataname='')
{
if($Host=='')
{
$Host=$this->Host;
}
if($User=='')
{
$User=$this->User;
}
if($Passwd=='')
{
$Passwd=$this->Passwd;
}
if($Dataname=='')
{
$Dataname=$this->Dataname;
}
$this->conn=ADONewConnection($this->DataBase) or die('飞了');
$this->conn->PConnect($Host,$User,$Passwd,$Dataname)or dir('死了');
$this->conn->Execute('set names gbk');
return $this->conn;
}
/*    查询数据       */
function query_str($sql)
{
if($this->conn='')
{
$this->connection();
}
$this->rs=$this->conn->execute($sql);
if(rs==false)
{
echo '语句不正确';
}
return $this->rs;
}
/* 基本数据操作   */
function oper($sql)
{
$str=array('insert'=>'数据输入失败','update'=>'数据修改失败','delete'=>'数据删除失败');
foreach($str as $key=>$value)
{
if(substr(trim($sql),0,6)==$key)
{
$this->rs=$this->conn->execute($sql);
if($this->rs==false)
{

$this->meg($value);
}
}
}
}
function meg($err)
{
$this->error=$this->conn->errorMsg();
echo "<strong>  发生了 $err  </strong>原因为:".$this->error;

}
}
?>

版主 或者 高手们多多批评 看一下 这样写可以不
首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照