joomla 2.5 查询 select 从一个 table 插入另一个
joomla 2.5 query select from one table insert into another
使用 joomla 插件我试图从 '#__users' table 中获取一些用户信息并将该信息插入另一个 table '#__new_table ' 创建用户时。
代码如下
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' 被复制到新的 table 并显示在 '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();
}
}
即使 'name' 和 'username' 字段存在于两个 table 中,这也不起作用。
有没有更好的方法为 joomla 2.5 编写此函数。同样在上面的示例中,我一次只获取一个值。如果我试图一次从“#__users”中获取一些值以插入到“#__new_table”中的几个字段中..我将如何更改上述功能。
谢谢。
调试此问题的最简单方法是打印第二个示例中的查询并将其粘贴到 phpMyAdmin 中,看看它会抛出什么样的错误。我的猜测是第二个 table 中的 id 字段不能为空,但您没有在第二个示例中添加它。
您应该 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();
}
}
使用 joomla 插件我试图从 '#__users' table 中获取一些用户信息并将该信息插入另一个 table '#__new_table ' 创建用户时。
代码如下
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' 被复制到新的 table 并显示在 '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();
}
}
即使 'name' 和 'username' 字段存在于两个 table 中,这也不起作用。
有没有更好的方法为 joomla 2.5 编写此函数。同样在上面的示例中,我一次只获取一个值。如果我试图一次从“#__users”中获取一些值以插入到“#__new_table”中的几个字段中..我将如何更改上述功能。
谢谢。
调试此问题的最简单方法是打印第二个示例中的查询并将其粘贴到 phpMyAdmin 中,看看它会抛出什么样的错误。我的猜测是第二个 table 中的 id 字段不能为空,但您没有在第二个示例中添加它。
您应该 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();
}
}