0

joomla+k2 サイトにコピーする必要がある記事がたくさんあります。バックエンドに移動して 1 つずつ追加したくないので、部分的に学習目的でデータベースを直接更新しようとしています。

k2 アイテムを作成し、偽のアイテムが十分になるまでそれを複製しました。このようにして、titleandを更新し、introtext他のフィールドを無視するだけで済み、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 を返します。これが発生した場合のデバッグ方法を教えてください。

4

1 に答える 1