2015-02-17 5 views
0

Использование плагина joomla Я пытаюсь захватить некоторую информацию о пользователе из таблицы «#__users» и вставить эту информацию в другую таблицу «#__new_table», когда пользователь создан.joomla 2.5 query select from one table insert into another

Код выглядит следующим образом

function onUserAfterSave($user, $isnew, $success, $msg) { 
    if ($isnew && $success) { 
     $db = &JFactory::getDBO(); 
     $db->setQuery('INSERT INTO #__new_table (user_id) VALUES ('.$user['id'].')'); 
     $db->query(); 
    } 
    } 

указанных работ и «Идентификатор» копируется в новую таблицу и показывает в «user_id» строки. Если бы я попробовать следующее однако:

function onUserAfterSave($user, $isnew, $success, $msg) { 
    if ($isnew && $success) { 
     $db = &JFactory::getDBO(); 
     $db->setQuery('INSERT INTO #__new_table (name) VALUES ('.$user['username'].')'); 
     $db->query(); 
    } 
    } 

Тогда это не работает, даже несмотря на то поля «Имя» и «имя пользователя» существуют в обеих таблицах.

Есть ли лучший способ написать эту функцию для joomla 2.5. Также в приведенных выше примерах я просто хватаю одно значение за раз. Если бы я сразу же попытался захватить несколько значений из «#__users», чтобы вставить несколько полей в «#__new_table» .. как бы я изменил указанную выше функцию.

Спасибо.

ответ

0

Вы должны quote имя пользователя.

function onUserAfterSave($user, $isnew, $success, $msg) { 
    if ($isnew && $success) { 
     $db = &JFactory::getDBO(); 
     $db->setQuery('INSERT INTO #__new_table (name) VALUES ('.$db->quote($user['username']).')'); 
     $db->query(); 
    } 
    } 
+0

Спасибо, используя «$ db-> quote», помогли, и я получил его работу! – nrider

0

Самый простой способ отладить эту проблему - распечатать запрос во втором примере и вставить его в phpMyAdmin и посмотреть, какую ошибку он будет вызывать. Я предполагаю, что поле id во второй таблице не может быть нулевым, но вы не добавляете его во втором примере.

+0

Благодарим за отзыв по отладке, но решение Irfan дало работу. На самом деле, как ваш информативный сайт joomla btw! – nrider

Смежные вопросы