2015-02-17 98 views
0

使用joomla插件我想從'#__users'表中獲取一些用戶信息,並在創建用戶時將該信息插入另一個表'#__new_table'。joomla 2.5查詢select從一張表插入另一張表

的代碼如下

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(); 
    } 
    } 

上述工程和「ID」被複制到新的表,並示出了「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。同樣在上面的例子中,我只是一次抓取一個值。如果我試圖從'#__用戶'一次性獲取一些值以插入'#__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 2015-02-18 21:01:42

0

調試此問題的最簡單方法是在第二個示例中打印查詢並將其粘貼到phpMyAdmin中,並查看它會拋出什麼樣的錯誤。我的猜測是第二個表中的id字段不能爲空,但是你並沒有在第二個例子中添加它。

+0

感謝您的調試提示,但解決方案Irfan給了工作。真的很喜歡你的信息joomla網站btw! – nrider 2015-02-18 21:04:20