2016-05-11 3 views
0

У меня есть много статей, которые мне нужно скопировать на сайт joomla + k2, я не хочу переходить на бэкэнд и добавлять их по одному, поэтому я сейчас пытаясь непосредственно обновить базу данных, частично для обучения.Joomla3: ручное обновление таблицы в базе данных

Я создал элемент k2 и продублировал его до тех пор, пока у меня не будет достаточно поддельных элементов, поэтому мне просто нужно обновить title и introtext и игнорировать другие поля, и я подготовил статьи в JSON.

Теперь мой первый вопрос: где самое лучшее место для размещения этого файла .PHP, который будет управлять данными базы данных? Он должен иметь подключение к базе данных готово и не загружать страницу. В настоящее время я использую копию файла index.php под ROOT, прокомментировав $app->execute();, чтобы он фактически не загружал страницу. Хотя соединение с базой данных является хорошим (я успешно «выбираю» данные из таблицы), он чувствует себя очень неудобно, а также я не могу использовать плагины разработчиков, такие как «j! Dump».

Во-вторых, и что более важно, мой код не работает: скопировать код из this documentation и сделать как небольшие изменения, как я могу, но он не работает, то $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() возвращает истину, пожалуйста, научите меня, когда это происходит, как отлаживать?

+0

Написать действительный запрос SQL в PHPMyAdmin затем попробовать его в Joomla , – mokiSRB

ответ

1

Достаточно разместить файл на том же уровне файла index.php, но не забудьте добавить какой-либо хэш для доступа к файлу через браузер. Например, ссылка должна быть следующей: www.yourdomain.com/youfile.php?hash=1234567890

Предоставление хэша предотвратит запуск других файлов.

Что касается вашего запроса не работает, попробуйте следующее (нет необходимости следовать строгим методам Joomla запросов для сценария, как это):

$db = JFactory::getDbo(); 
$sql = "Your SQL query"; 
$db->setQuery($sql); 
$db->query(); 
Смежные вопросы