簡體   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