天天看點

php操作pdo,PHP PDO操作API

class DBLibrary

{

private $obj;

private function __construct($host, $name, $user, $pwd, $connect)

{

if(empty($host) || empty($name) || empty($user) || empty($pwd)) exit('Param Error');

try

{

$charset = C('charset');

$charset = empty($charset) ? 'utf8' : str_replace('-', '', $charset);

@$this->obj = new PDO("mysql:dbname={$name};host={$host};charset={$charset}", $user, $pwd, array(PDO::ATTR_PERSISTENT=>$connect));

$this->obj->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);

}

catch(PDOException $e)

{

exit('DB Connect Fails');

}

}

public static function SetInstance($host, $name, $user, $pwd, $connect = false)

{

static $object = null;

if(!is_object($object)) $object = new self($host, $name, $user, $pwd, $connect);

return $object;

}

private function Query($sql)

{

if(empty($sql)) return '';

try

{

$rs = $this->obj->query($sql);

if(!is_object($rs)) exit('DB Non Object Error');

$rs->setFetchMode(PDO::FETCH_ASSOC);

return $rs;

}

catch(PDOException $e)

{

exit('DB Resources Error');

}

}

public function GetAll($sql)

{

$data = $this->Query($sql)->fetchAll();

return empty($data) ? '' : $data;

}

public function GetRow($sql)

{

$data = $this->Query($sql)->fetch();

return empty($data) ? '' : $data;

}

public function GetOne($sql)

{

$data = $this->Query($sql)->fetchColumn();

return empty($data) ? '' : $data;

}

public function GetCol($sql)

{

if(empty($sql)) return '';

$data = array();

$rs = $this->obj->query($sql);

$rs->setFetchMode(PDO::FETCH_NUM);

while($row = $rs->fetch())

{

$data[] = $row[0];

}

return empty($data) ? '' : $data;

}

public function Exec($sql)

{

if($this->obj->exec($sql)) return true;

return false;

}

public function Insert($sql)

{

if($this->obj->exec($sql)) return $this->obj->lastInsertId();

return -1;

}

public function StartTrans()

{

$this->obj->beginTransaction();

}

public function Commit()

{

$this->obj->commit();

}

public function RollBack()

{

$this->obj->rollBack();

}

}

?>