gpt4 book ai didi

php - Joomla 3 : manually updating a table in the database

转载 作者:行者123 更新时间:2023-11-29 11:32:29 24 4
gpt4 key购买 nike

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

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

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

其次,也是更重要的,我的代码不起作用:我从 this documentation 复制代码并尽可能少地进行更改,但它不起作用,$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->e​​xecute()返回true,请教我发生这种情况时如何调试?

最佳答案

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

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

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

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

关于php - Joomla 3 : manually updating a table in the database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37174963/

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