用PHP开始你的MVC (二)抽象数据库接口(4)
$table = DB_SEQUENCE_TABLENAME;
$step = (int)$step;
$start = (int)$start;
$rs = mysql_query("UPDATE $table SET seq_num=seq_num+($step) WHERE seq_name='$fieldName'");
if(!$rs || mysql_affected_rows($this->cnn)<1){
$rs = mysql_query('SELECT * FROM '.DB_SEQUENCE_TABLENAME, $this->cnn);
if(!$rs){
$sql = "CREATE TABLE $table (
seq_name VARCHAR( 20 ) NOT NULL ,
seq_num BIGINT( 20 ) DEFAULT 1 NOT NULL ,
PRIMARY KEY (seq_name))";
$rs = mysql_query($sql) or $this->_halt('创建序列发生器表失败', $sql);
}
$rs = mysql_query("INSERT INTO $table VALUES('$fieldName', $start)") or
$this->_halt('添加新序列错误', $sql);
$seq = $start;
}else{
$seq = &$this->getOne("SELECT seq_num FROM $table WHERE seq_name='$fieldName'");
}
return $seq;
}
function _getCommand($fetchType){
switch($fetchType){
case DB_FETCH_ASSOC: $exe = 'mysql_fetch_assoc'; break;
case DB_FETCH_NUM: $exe = 'mysql_fetch_row'; break;
case DB_FETCH_BOTH: $exe = 'mysql_fetch_array'; break;
case DB_FETCH_OBJECT: $exe = 'mysql_fetch_object'; break;
default: $exe = 'mysql_fetch_array'; break;
}
return $exe;
}
function _halt($msg){
$errNo = mysql_errno($this->cnn);
$errStr = mysql_error($this->cnn);
die("数据库错误:$msg<br> $errNo : $errStr");
}
}
?>