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

时间:2016-05-11 23:39:20

标签: php mysql database joomla k2

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

我创建了一个k2项并重复它,直到我有足够的假项目,这样我只需要更新titleintrotext并忽略其他字段,我已经准备好了JSON中的文章。

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

其次,更重要的是,我的代码不起作用:我从this documentation复制代码并尽可能少地进行更改,但它不起作用,{ {1}}是$result,但表格根本没有更新。由于对joomla编码和数据库知之甚少,我不可能自己调试它。

true

没有错误且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(); 返回true,如果发生这种情况,请教我如何调试?

1 个答案:

答案 0 :(得分:1)

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

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

至于您的查询不起作用,请尝试以下操作(不需要遵循严格的Joomla查询方法来处理这样的脚本):

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