php封装一个mysql的类_php封装一个class类实现mysql数据库的增删该查

展开全部

class db{

private $db;

const MYSQL_OPT_READ_TIMEOUT = 11;

const MYSQL_OPT_WRITE_TIMEOUT = 12;

private $tbl_name;

private $where;

private $sort;

private $fields;

private $limit;

public static $_instance = null;

function __construct(){

62616964757a686964616fe4b893e5b19e31333335303539$cfg = loadConfig('db');

$db = mysqli_init();

$db->options(self::MYSQL_OPT_READ_TIMEOUT, 3);

$db->options(self::MYSQL_OPT_WRITE_TIMEOUT, 1);

@$db->real_connect($cfg['host'],$cfg['user'],$cfg['pwd'],$cfg['db']);

if ($db->connect_error) {

$this->crash($db->errno,$db->error);

}

$db->set_charset("utf8");

$this->db = $db;

//echo $this->db->stat;

}

public static function getInstance(){

if(!(self::$_instance instanceof self)){

self::$_instance = new self();

}

return self::$_instance;

}

private function __clone() {} //覆盖__clone()方法,禁止克隆

public function find($conditions = null){

if($conditions) $this->where($conditions);

return $this->getArray($this->buildSql(),1);

}

public function findAll($conditions = null){

if($conditions) $this->where($conditions);

return $this->getArray($this->buildSql());

}

//表

public function t($table){ $this->tbl_name = $table; return $this;}

//条件

public function where($conditions){

$where = '';

if(is_array($conditions)){

$join = array();

foreach( $conditions as $key => $condition ){

$condition = $this->db->real_escape_string($condition);

$join[] = "`{$key}` = '{$condition}'";

}

$where = "WHERE ".join(" AND ",$join);

}else{

if(null != $conditions) $where = "WHERE ".$conditions;

}

$this->where = $where;

return $this;

}

//排序

public function sort($sort){

if(null != $sort) $sort = "ORDER BY {$sort}";

$this->sort = $sort;

return $this;

}

//字段

public function fields($fields){ $this->fields = $fields; return $this; }

public function limit($limit){$this->limit = $limit; return $this;}

private function buildSql(){

$this->fields = empty($this->fields) ? "*" : $this->fields;

$sql = "SELECT {$this->fields} FROM {$this->tbl_name} {$this->where} {$this->sort}";

accessLog('db_access',$sql);

if(null != $this->limit)$sql .= " limit {$this->limit}";

return $sql;

}

/**

* 返回查询数据

* @param $sql

* @param bool $hasOne

* @return array|bool|mixed

*/

private function getArray($sql,$hasOne = false){

if($this->db->real_query($sql) ){

if ($result = $this->db->use_result()) {

$row = array();

if($hasOne){

$row = $result->fetch_assoc();

}else{

while($d = $result->fetch_assoc()) $row[] = $d;

}

$result->close();

$this->fields = "*";

return $row;

}else{

return false;

}

}else{

if($this->db->error){

$this->crash($this->db->errno,$this->db->error,$sql);

}

}

}

public function findSql($sql,$hasOne = false){

accessLog('db_access',$sql);

if($this->db->real_query($sql) ){

if ($result = $this->db->use_result()) {

$row = array();

if($hasOne){

$row = $result->fetch_assoc();

}else{

while($d = $result->fetch_assoc()) $row[] = $d;

}

$result->close();

$this->fields = "*";

return $row;

}else{

return false;

}

}else{

if($this->db->error){

$this->crash($this->db->errno,$this->db->error,$sql);

}

}

}

public function create($row){

if(!is_array($row))return FALSE;

$row = $this->prepera_format($row);

if(empty($row))return FALSE;

foreach($row as $key => $value){

$cols[] = '`'.$key.'`';

$vals[] = "'".$this->db->real_escape_string($value)."'";

}

$col = implode(',', $cols);

$val = implode(',', $vals);

$sql = "INSERT INTO `{$this->tbl_name}` ({$col}) VALUES ({$val})";

accessLog('db_access',$sql);

if( FALSE != $this->db->query($sql) ){ // 获取当前新增的ID

if($this->db->insert_id){

return $this->db->insert_id;

}

if($this->db->affected_rows){

return true;

}

}

return FALSE;

}

//直接执行sql

public function runSql($sql){

accessLog('db_access',$sql);

if( FALSE != $this->db->query($sql) ){ // 获取当前新增的ID

return true;

}else{

return false;

}

}

public function update($row){

$where = "";

$row = $this->prepera_format($row);

if(empty($row))return FALSE;

foreach($row as $key => $value){

$value = $this->db->real_escape_string($value);

$vals[] = "`{$key}` = '{$value}'";

}

$values = join(", ",$vals);

$sql = "UPDATE {$this->tbl_name} SET {$values} {$this->where}";

accessLog('db_access',$sql);

if( FALSE != $this->db->query($sql) ){ // 获取当前新增的ID

if( $this->db->affected_rows){

return true;

}

}

return false;

}

function delete(){

$sql = "DELETE FROM {$this->tbl_name} {$this->where}";

if( FALSE != $this->db->query($sql) ){ // 获取当前新增的ID

if( $this->db->affected_rows){

return true;

}

}

return FALSE;

}

private function prepera_format($rows){

$columns = $this->getArray("DESCRIBE {$this->tbl_name}");

$newcol = array();

foreach( $columns as $col ){

$newcol[$col['Field']] = $col['Field'];

}

return array_intersect_key($rows,$newcol);

}

//崩溃信息

private function crash($number,$message,$sql=''){

$msg = 'Db Error '.$number.':'.$message ;

if(empty($sql)){

echo t('db_crash');

}else{

$msg .= " SQL:".$sql;

echo t('db_query_err');

}

accessLog('db_error',$msg);

exit;

}

}

本回答被提问者和网友采纳

2Q==

c50d6af2748da18e06a2dc6d9597acd0.gif

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Python中的MySQLdb模块来封装MySQL增删,关键步骤如下:1、首先,在代码中引入MySQLdb模块;2、接着,创建连接对象,连接MySQL数据库;3、随后,编写增删操作,实现业务逻辑;4、最后,关闭连接,释放资源。 ### 回答2: 封装一个Python的MySQL增删可以通过使用Python的`pymysql`库来实现。下面是一个示例代码,实现一个MySQL增删。 ```python import pymysql class MySQLHelper: def __init__(self, host, user, password, database): self.host = host self.user = user self.password = password self.database = database self.connection = self.connect() def connect(self): try: connection = pymysql.connect( host=self.host, user=self.user, password=self.password, database=self.database, charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor ) print("Connected to MySQL database") return connection except pymysql.Error as e: print(f"Connection failed: {e}") return None def execute_query(self, query, params=None): with self.connection.cursor() as cursor: try: cursor.execute(query, params) result = cursor.fetchall() return result except pymysql.Error as e: print(f"Query execution failed: {e}") return None def execute_update(self, query, params=None): with self.connection.cursor() as cursor: try: cursor.execute(query, params) self.connection.commit() return True except pymysql.Error as e: print(f"Update execution failed: {e}") self.connection.rollback() return False def close(self): if self.connection: self.connection.close() print("Connection closed") if __name__ == '__main__': host = "localhost" user = "root" password = "your_password" database = "your_database" helper = MySQLHelper(host, user, password, database) # 执行询 result = helper.execute_query("SELECT * FROM your_table") if result is not None: for row in result: print(row) # 执行更新 success = helper.execute_update("UPDATE your_table SET column1 = %s WHERE column2 = %s", ("new_value", "condition")) if success: print("Update successful") helper.close() ``` 这个封装了与MySQL数据库的连接、询和更新操作。在实例化时,需要传入数据库的主机名、用户名、密码和数据库名,然后可以使用`execute_query()`方法来执行询语句并获得结果,使用`execute_update()`方法来执行更新语句。最后,使用`close()`方法来关闭数据库连接。请注意,需要替换`your_password`、`your_database`、`your_table`和`condition`为实际的值。 ### 回答3: 在Python中封装MySQL增删的关键步骤如下: 第一步:导入所需模块 首先,我们需要导入`mysql.connector`模块来连接MySQL数据库。 ```Python import mysql.connector ``` 第二步:定义一个MySQL增删 我们可以创建一个封装MySQL增删的操作。在这个中,我们可以定义一些方法来执行具体的操作。 ```Python class MySQLManager: def __init__(self, host, user, password, database): self.host = host self.user = user self.password = password self.database = database self.conn = mysql.connector.connect( host=self.host, user=self.user, password=self.password, database=self.database ) def execute_query(self, query): cursor = self.conn.cursor() cursor.execute(query) result = cursor.fetchall() cursor.close() return result def execute_update(self, query): cursor = self.conn.cursor() cursor.execute(query) self.conn.commit() cursor.close() ``` 在`__init__`方法中,我们通过`mysql.connector.connect`方法连接到MySQL数据库。在`execute_query`方法中,我们执行询操作,并返回结果。在`execute_update`方法中,我们执行插入、更新或删除操作,并提交更改。 第三步:实例化MySQL增删 现在,我们可以实例化`MySQLManager`,并调用相应的方法来执行MySQL增删操作。 ```Python manager = MySQLManager(host='localhost', user='root', password='password', database='test') result = manager.execute_query('SELECT * FROM my_table') manager.execute_update('INSERT INTO my_table (column1, column2) VALUES (value1, value2)') ``` 在实例化时,我们需要传入正确的主机名、用户名、密码和数据库名。 通过调用`execute_query`方法,我们可以执行询并获取结果。 通过调用`execute_update`方法,我们可以执行插入、更新或删除操作。 这样,我们就可以使用Python封装MySQL增删来执行相关的操作了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值