joomla+k2 サイトにコピーする必要がある記事がたくさんあります。バックエンドに移動して 1 つずつ追加したくないので、部分的に学習目的でデータベースを直接更新しようとしています。
k2 アイテムを作成し、偽のアイテムが十分になるまでそれを複製しました。このようにして、title
andを更新し、introtext
他のフィールドを無視するだけで済み、JSON で記事を準備しました。
ここで私の最初の質問は、データベースを操作するこの .PHP ファイルを配置するのに最適な場所はどこかということです。データベース接続の準備ができており、ページをロードしない必要があります。現在、ROOT の下にあるファイルのコピーを使用しています。index.php
コメントアウトしている$app->execute();
ため、実際にはページが読み込まれません。データベース接続は良好ですが(テーブルからデータを正常に「選択」しました)、非常にぎこちなく感じ、「j!dump」などの開発者プラグインも使用できません。
第二に、さらに重要なことに、コードが機能しません。このドキュメントからコードをコピーし、できる限り変更を加えませんが、機能しませんが、テーブル$result
はtrue
まったく更新されません。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 を返します。これが発生した場合のデバッグ方法を教えてください。