繁体   English   中英

Joomla3:手动更新数据库中的表

[英]Joomla3: manually updating a table in the database

我有很多文章需要复制到joomla + k2网站,我不想去后端并逐个添加它们,所以我现在正尝试直接更新数据库,部分出于学习目的。

我创建了一个k2项并进行了复制,直到有足够多的假项为止,这样,我只需要更新titleintrotext并忽略其他字段,就可以用JSON准备文章。

现在,我的第一个问题是,放置将要操纵数据库的.PHP文件的最佳位置在哪里? 它必须已准备好数据库连接并且不加载页面。 目前,我在ROOT下使用index.php文件的副本,已注释掉$app->execute(); 因此它实际上不会加载该页面。 尽管数据库连接很好(我成功地从表中“选择”了数据),但是感觉很尴尬,而且我不能使用“ j!dump”之类的开发人员插件。

其次,更重要的是 ,我的代码不起作用:我从本文档中复制了代码,并进行了尽可能少的更改,但它不起作用, $resulttrue但表根本没有更新。 由于对joomla编码和数据库了解甚少,所以我自己无法调试它。

define('_JEXEC', 1);

if (file_exists(__DIR__ . '/defines.php'))
{
    include_once __DIR__ . '/defines.php';
}

if (!defined('_JDEFINES'))
{
    define('JPATH_BASE', __DIR__);
    require_once JPATH_BASE . '/includes/defines.php';
}

require_once JPATH_BASE . '/includes/framework.php';

// Set profiler start time and memory usage and mark afterLoad in the profiler.
JDEBUG ? $_PROFILER->setStart($startTime, $startMem)->mark('afterLoad') : null;

// Instantiate the application.
$app = JFactory::getApplication('site');

//mycode
$db = JFactory::getDbo();
$query = $db->getQuery(true);

$fields = array(
    $db->quoteName('title') . ' = ' . $db->quote('asdfasdf')
);

$conditions = array(
    $db->quoteName('id') . ' = 2'
);

$query->update($db->quoteName('#__k2_items'))->set($fields)->where($conditions);
$result = $db->execute();

没有错误,并且$db->execute()返回true,请教我发生这种情况时如何调试?

可以将文件放置在与index.php文件相同的级别上,但是请确保添加某种哈希值以通过浏览器访问文件。 例如,链接应为www.yourdomain.com/youfile.php?hash=1234567890

提供哈希将阻止其他人运行您的文件。

至于您的查询无效,请尝试以下操作(对于这样的脚本,无需遵循严格的Joomla查询方法):

$db = JFactory::getDbo();
$sql = "Your SQL query";
$db->setQuery($sql);
$db->query();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM