gpt4 book ai didi

php - 在 Joomla 中的表之间移动行

转载 作者:可可西里 更新时间:2023-11-01 06:38:43 25 4
gpt4 key购买 nike

我一直在尝试创建一个 PHP 脚本,该脚本会定期将“已完成”的行从我的 Joomla 站点上的一个表移动到另一个表。我编写的查询在 PHPMyAdmin 中运行良好:

INSERT INTO my_calsgovdocs.sent_copy
SELECT * FROM my_calsgovdocs.entered_copy
WHERE `Status` LIKE '%Sent%';
DELETE FROM my_calsgovdocs.entered_copy
WHERE `Status` LIKE '%Sent%';

我试图将它翻译成一些可以在 Joomla 中运行的 PHP 代码,并且我已经将该代码粘贴在下面。它返回一个“意外的 T_STRING”错误,该错误指向下面开始 ->insert into 的行,现在我想到脚本无法运行,因为“insert into”不是有效的方法名称!到目前为止,我找不到在 Joomla 中使用的等效方法。这是我对代码的尝试:

try
{
$db->transactionStart();

$query = $db->getQuery(true);

$query
->insert into($db->quoteName('sent_copy'))
->select('*')
->from($db->quoteName('entered_copy'))
->where($db->quoteName('Status') . ' LIKE ' . $db->quote('%Sent%') . ';')
->delete from($db->quoteName('entered_copy'))
->where($db->quoteName('Status') . ' LIKE ' . $db->quote('%Sent%'));

$db->setQuery($query);
$result = $db->execute();

$db->transactionCommit();
}
catch (Exception $e)
{
$db->transactionRollback();
JErrorPage::render($e);
}

有人知道我如何在 Joomla 中完成这个吗?我更愿意(正如您可能已经在上面注意到的那样)在一次交易中完成,这样,如果出现错误,我的手上就不会乱七八糟。

最佳答案

$db->setQuery 允许将查询字符串作为参数而不是对象传递。请参阅“准备查询”:https://docs.joomla.org/J1.5:Accessing_the_database_using_JDatabase

我还建议将其中两个查询作为同一事务的一部分运行。

不幸的是,我没有方便的 joomla 安装来测试它,如果您发现它不起作用,请发表评论。

try
{
$db->transactionStart();

$query = $db->getQuery(true);

$query1 = "INSERT INTO my_calsgovdocs.sent_copy
SELECT * FROM my_calsgovdocs.entered_copy
WHERE `Status` LIKE '%Sent%'";

$db->setQuery($query1);
$result1 = $db->execute();

$query2 = "DELETE FROM my_calsgovdocs.entered_copy
WHERE `Status` LIKE '%Sent%'";

$db->setQuery($query2);
$result2 = $db->execute();

$db->transactionCommit();
}
catch (Exception $e)
{
$db->transactionRollback();
JErrorPage::render($e);
}

关于php - 在 Joomla 中的表之间移动行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34571094/

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