微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我一直在尝试创建一个 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中完成这个任务?我希望(正如你上面可能已经注意到的)在一次交易中做到这一点,这样,如果出现错误,我手上就不会弄得一团糟.

你可以尝试在普通的旧PHP中做到这一点?就像是
$conf = JFactory::getConfig(); // load your config
try{
  $link = MysqLi_connect($conf->get('host'),$conf->get('user'),$conf->get('password'),$conf->get('db'));
  MysqLi_begin_transaction($link,MysqLI_TRANS_START_READ_WRITE);
  MysqLi_query($link,"INSERT INTO my_calsgovdocs.sent_copy
    SELECT *  FROM my_calsgovdocs.entered_copy
    WHERE `Status` LIKE '%sent%'");
  MysqLi_query($link,"DELETE FROM my_calsgovdocs.entered_copy
    WHERE `Status` LIKE '%sent%'");
  MysqLi_commit($link);
}
catch (Exception $e)
{
  MysqLi_rollback($link);
  JErrorPage::render($e);
}
MysqLi_close($link);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐