gpt4 book ai didi

php - 在函数 php 中组合 mysql 查询

转载 作者:行者123 更新时间:2023-11-29 18:23:07 25 4
gpt4 key购买 nike

我正在尝试创建归档记录的函数。我有一个记录列表,每个记录都有一个下拉菜单,其中包含选项删除、编辑、存档。单击存档时,我会将该记录移动到新表,然后删除原始记录。我可以在同一个查询中运行插入和删除吗?如果不是,我还能怎样实现这一目标?这是我目前所拥有的:

public function archiveCampaign($campaign_id) {

$this->db->query("INSERT INTO `" . DB_PREFIX . "campaigns_archive` SELECT * WHERE campaign_id = '" . (int)$campaign_id . "'");
$this->db->query("DELETE FROM `" . DB_PREFIX . "campaigns` WHERE campaign_id = '" . (int)$campaign_id . "'");


return $campaign_id;
}

最佳答案

你已经很接近了

Sql 不允许在单个语句中使用多个命令,子查询除外。只有 SELECT 语句具有可操作的返回值,因此它们是唯一可以在子查询中使用的命令。这意味着您必须运行两个与您已经编写的命令非常相似的命令。

如果我假设您的 db 对象的 query 方法返回 true/false,或需要评估的内容(可能确实如此)。返回成功/失败,或在某处抛出异常,这样您就不会得到损坏的数据。

public function archiveCampaign($campaign_id) {

$insertResult = $this->db->query("INSERT INTO `" . DB_PREFIX . "campaigns_archive` SELECT * FROM `" . DB_PREFIX . "campaigns` WHERE campaign_id = '" . (int)$campaign_id . "'");

if (!$insertResult) {
// DON'T DELETE THE DATA, THE INSERT FAILED!
return false; // or an error object, or throw an exception
}

$deleteResult = $this->db->query("DELETE FROM `" . DB_PREFIX . "campaigns` WHERE campaign_id = '" . (int)$campaign_id . "'");

if (!$deleteResult) {
// DELETE FAILED, remove from archive.
$this->db->query("DELETE FROM `" . DB_PREFIX . "campaigns_archive` WHERE campaign_id = '" . (int)$campaign_id . "'");
return false; // or an error object, or throw an exception
}

return true;
}

PHP PDO

请考虑使用PHP:PDO .

关于php - 在函数 php 中组合 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46410863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com