以下是将上述示例代码封装成一个类的形式:
class FaAskTag {
private $pdo;
// 构造函数,传入PDO对象
public function __construct($pdo) {
$this->pdo = $pdo;
}
// 检查并更新标签
public function checkAndUpdateTag($biaoqian) {
// 查询标签是否存在
$sql = "SELECT id, questions FROM fa_ask_tag WHERE name = :biaoqian";
$stmt = $this->pdo->prepare($sql);
$stmt->bindParam(':biaoqian', $biaoqian);
$stmt->execute();
// 如果标签存在,则更新questions并返回id
if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$id = $row['id'];
$questions = $row['questions'] + 1;
$updateSql = "UPDATE fa_ask_tag SET questions = :questions WHERE id = :id";
$updateStmt = $this->pdo->prepare($updateSql);
$updateStmt->bindParam(':questions', $questions);
$updateStmt->bindParam(':id', $id);
$updateStmt->execute();
return $id;
} else {
// 如果标签不存在,则插入新的记录并返回id
$createtime = time();
$updatetime = time();
$insertSql = "INSERT INTO fa_ask_tag (name, questions, createtime, updatetime, status) VALUES (:name, :questions, :createtime, :updatetime, 'normal')";
$insertStmt = $this->pdo->prepare($insertSql);
$insertStmt->bindParam(':name', $biaoqian);
$insertStmt->bindValue(':questions', 1);
$insertStmt->bindParam(':createtime', $createtime);
$insertStmt->bindParam(':updatetime', $updatetime);
$insertStmt->execute();
return $this->pdo->lastInsertId();
}
}
}
在上述代码中,我们创建了一个名为FaAskTag
的类,并在构造函数中接收PDO对象作为参数,并将其保存到私有变量$pdo
中。
然后,我们将检查并更新标签的逻辑封装到公共方法checkAndUpdateTag()
中。该方法与之前的示例代码相同。
使用这个类时,需要先创建PDO对象,并将其传递给FaAskTag
类的实例。然后,可以通过调用实例的checkAndUpdateTag()
方法来检查并更新标签。
// 创建PDO对象
$pdo = new PDO("数据库连接信息");
// 创建FaAskTag实例
$faAskTag = new FaAskTag($pdo);
// 调用方法检查并更新标签
$biaoqian = "标签名称";
$id = $faAskTag->checkAndUpdateTag($biaoqian);
希望对你有所帮助!