PHP面向对象:PHP如何插入、更新、删除、读取Mysql数据

admin 2024-04-21 391 阅读 0评论

今日的计划是为大家写一个可以直接调用的PHP操作Mysql的案例代码,方便PHP新手在处理Mysql数据的时候直接调用,避免在写操作Mysql数据库的sql语句的时候出现错误和感到复杂。本代码可以直接用于插入、更新、读取、删除的动作,在使用过程中更加方便简洁易理解。

一、核心代码:db.php

<?php
class MysqlOperation {

private $dbh;

public function __construct($dsn, $username, $password) {

try {

$this->dbh = new PDO($dsn, $username, $password);

$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}catch (PDOException $e) {

echo 'Connection failed: ' . $e->getMessage();

}

}

public function insert($table, $data) {

$fields = implode(', ', array_keys($data));

$params = ':' . implode(', :', array_keys($data));

$sql = "INSERT INTO $table ($fields) VALUES ($params)";

try {

$stmt = $this->dbh->prepare($sql);

$stmt->execute($data);

return "Data inserted successfully.";

}catch (PDOException $e) {

return "Insert operation failed: " . $e->getMessage();

}

}

public function update($table, $data, $where) {

$set = '';

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

$set .= $key . ' = :' . $key . ', ';

}

$set = rtrim($set, ', ');

$whereClause = '';

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

$whereClause .= $key . ' = :' . $key . ' AND ';

}

$whereClause = rtrim($whereClause, ' AND ');

$sql = "UPDATE $table SET $set WHERE $whereClause";

try {

$stmt = $this->dbh->prepare($sql);

$stmt->execute(array_merge($data, $where));

return "Update operation successful.";

}catch (PDOException $e) {

return "Update operation failed: " . $e->getMessage();

}

}

public function delete($table, $where) {

$whereClause = '';

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

$whereClause .= $key . ' = :' . $key . ' AND ';

}

$whereClause = rtrim($whereClause, ' AND ');

$sql = "DELETE FROM $table WHERE $whereClause";

try {

$stmt = $this->dbh->prepare($sql);

$stmt->execute($where);

return "Delete operation successful.";

}catch (PDOException $e) {

return "Delete operation failed: " . $e->getMessage();

}

}

public function select($table, $where = array(), $pagination = array(), $sorting = array()) {

$whereClause = '';

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

$whereClause .= $key . ' = :' . $key . ' AND ';

}

$whereClause = ($whereClause != '') ? 'WHERE ' . rtrim($whereClause, ' AND ') : '';

$limit = '';

if (!empty($pagination)) {

$offset = ($pagination['page'] - 1) * $pagination['limit'];

$limit = "LIMIT $offset, " . $pagination['limit'];

}

$orderBy = '';

if (!empty($sorting)) {

$orderBy = "ORDER BY {$sorting['column']} {$sorting['order']}";

}

$sql = "SELECT * FROM $table $whereClause $orderBy $limit";

try {

$stmt = $this->dbh->prepare($sql);

$stmt->execute($where);

return $stmt->fetchAll(PDO::FETCH_ASSOC);

}catch (PDOException $e) {

return "Select operation failed: " . $e->getMessage();

}

}

}

?>

注释:该代码已经包括了PHP对Mysql数据库的一些常用动作,比如:插入数据、更新数据、读取数据和删除数据。我们在需要对数据库进行操作的脚本中直接引入该类即可,引入方法:

require 'db.php';

二、插入数据

<?php
require 'db.php';//引入核心代码
// 传入数据库连接信息实例化 MysqlOperation 类
$dsn = 'mysql:host=your_host;dbname=your_db';
$mysqlOperation = new MysqlOperation($dsn, 'your_username', 'your_password');
//your_host替换成你的数据库地址;your_db替换成你的数据库名称;your_username替换成你的数据库账号;your_password替换成数据库账号对应的密码
// 准备要插入的数据
$dataToInsert = array(
   'user_id' => 1,
   'username' => 'john_doe',
   'email' => 'john.doe@example.com'
);
//$dataToInsert数组里的对象和值你可以根据自己数据库表的字段进行修改或者增加
// 调用 insert 方法插入数据
$insertResult = $mysqlOperation->insert('users', $dataToInsert);//这里的users是数据表的名称,$dataToInsert是需要插入的数据,前面我们已经定义了
echo $insertResult . "\n";//打印执行结果
?>

三、更新数据

<?php
require 'db.php';//引入核心代码
// 传入数据库连接信息实例化 MysqlOperation 类
$dsn = 'mysql:host=your_host;dbname=your_db';
$mysqlOperation = new MysqlOperation($dsn, 'your_username', 'your_password');
//your_host替换成你的数据库地址;your_db替换成你的数据库名称;your_username替换成你的数据库账号;your_password替换成数据库账号对应的密码
// 准备要更新的数据和条件
$dataToUpdate = array(
   'username' => 'john_smith',
   'email' => 'john.smith@example.com'
);//定义需要更新的内容,案例中需要把username更新为john_smith,把email更新为john.smith@example.com
$whereCondition = array(
   'user_id' => 1
);//这是更新条件,案例中是更新user_id=1的这行数据,你可以按照该格式添加或者修改条件
// 调用 update 方法更新数据
$updateResult = $mysqlOperation->update('users', $dataToUpdate, $whereCondition);
echo $updateResult . "\n";
?>

四、删除数据

<?php
require 'db.php';//引入核心代码
// 传入数据库连接信息实例化 MysqlOperation 类
$dsn = 'mysql:host=your_host;dbname=your_db';
$mysqlOperation = new MysqlOperation($dsn, 'your_username', 'your_password');
//your_host替换成你的数据库地址;your_db替换成你的数据库名称;your_username替换成你的数据库账号;your_password替换成数据库账号对应的密码
// 准备删除条件
$whereToDelete = array(
   'user_id' => 1
);//删除user_id的值为1的这行数据
// 调用 delete 方法删除数据
$deleteResult = $mysqlOperation->delete('users', $whereToDelete);
echo $deleteResult . "\n";
?>

五、读取数据

<?php
require 'db.php';//引入核心代码
// 传入数据库连接信息实例化 MysqlOperation 类
$dsn = 'mysql:host=your_host;dbname=your_db';
$mysqlOperation = new MysqlOperation($dsn, 'your_username', 'your_password');
//your_host替换成你的数据库地址;your_db替换成你的数据库名称;your_username替换成你的数据库账号;your_password替换成数据库账号对应的密码
// 准备查询条件、分页信息和排序信息
$whereToSelect = array(
   'username' => 'john_smith'
);//查询用户名为john_smith的用户信息
$paginationInfo = array(
   'page' => 1,
   'limit' => 10
);//page为页数,limit为读取的条数,如果username为john_smith的数据只有一个,那么不管limit的值是多少,都只能读取出一条数据
$sortingInfo = array(
   'column' => 'user_id',
   'order' => 'DESC'
);//column为排序依据,这里根据用户ID大小进行排序,order为排序方式,DESC为降序,ASC为升序
// 调用 select 方法查询数据
$selectResult = $mysqlOperation->select('users', $whereToSelect, $paginationInfo, $sortingInfo);
print_r($selectResult);
?>

六、总结

我写的这些个使用案例演示了如何在实例化 MysqlOperation 类时传入数据库连接信息,然后调用 insert、update、delete 和 select 方法来操作数据库表中的数据。通过动态传入数据库连接信息,实现了在实例化时即可连接数据库,并进行相应的数据库操作。细心的朋友可能发发现,案例中有一段实例化MysqlOperation类的代码重复率太高,基本在每一个操作Mysql的PHP脚本中都需要,那么我们有没有办法让它变得更简单呢?当然可以:

1:新建文件:config.php

<?php
$dsn = 'mysql:host=your_host;dbname=your_db';
$mysqlOperation = new MysqlOperation($dsn, 'your_username', 'your_password');
//your_host替换成你的数据库地址;your_db替换成你的数据库名称;your_username替换成你的数据库账号;your_password替换成数据库账号对应的密码
//======================================
//这里可以增加更多程序需要频繁调用的其他函数,比如:
$default_domain  = 'www.qq.com';//默认主域名
$default_sitename = '文煞站长笔记网';//默认网站名称
//...
//======================================
?>

2:调用案例

<?php
require 'db.php';//引入核心文件
require 'config.php';//引入配置文件
// 准备要插入的数据
$dataToInsert = array(
   'user_id' => 1,
   'username' => 'john_doe',
   'email' => 'john.doe@example.com'
);
//$dataToInsert数组里的对象和值你可以根据自己数据库表的字段进行修改或者增加
// 调用 insert 方法插入数据
$insertResult = $mysqlOperation->insert('users', $dataToInsert);//这里的users是数据表的名称,$dataToInsert是需要插入的数据,前面我们已经定义了
echo $insertResult . "\n";//打印执行结果
//下面还可以进行其他操作,不需要再次引入核心文件和配置文件
/ 准备删除条件
$whereToDelete = array(
   'user_id' => 1
);//删除user_id的值为1的这行数据
// 调用 delete 方法删除数据
$deleteResult = $mysqlOperation->delete('users', $whereToDelete);
echo $deleteResult . "\n";
?>

发表评论

快捷回复: 表情:
aoman baiyan bishi bizui cahan ciya dabing daku deyi doge fadai fanu fendou ganga guzhang haixiu hanxiao zuohengheng zhuakuang zhouma zhemo zhayanjian zaijian yun youhengheng yiwen yinxian xu xieyanxiao xiaoku xiaojiujie xia wunai wozuimei weixiao weiqu tuosai tu touxiao tiaopi shui se saorao qiudale qinqin qiaoda piezui penxue nanguo liulei liuhan lenghan leiben kun kuaikule ku koubi kelian keai jingya jingxi jingkong jie huaixiao haqian aini OK qiang quantou shengli woshou gouyin baoquan aixin bangbangtang xiaoyanger xigua hexie pijiu lanqiu juhua hecai haobang caidao baojin chi dan kulou shuai shouqiang yangtuo youling
提交
评论列表 (有 0 条评论, 391人围观)

最近发表

热门文章

最新留言

热门推荐

标签列表