以下是给我一些麻烦的代码段:
if ($accountMask){
function updateAccountMask(){
$userIdValue =& JFactory::getUser();
$userId = $userIdValue->id;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
// Fields to update.
$fields = $db->quoteName('cb_accountmask');
// Conditions for which records should be updated.
$conditions = $db->quoteName('user_id') . '='.$userId;
$query->update($db->quoteName('#__comprofiler'))->set($fields)->where($conditions);
$db->setQuery($query);
$result = $db->query();
return $result;
}
updateAccountMask();
}
我想我构建数据库查询的方式存在一些简单的格式问题,但目前我并不明白。有什么想法吗?
我发现数据库连接很好,问题似乎是我无法在$accountMask;
函数中提取updateAccountMask
值。如果我执行以下操作:
if ($accountMask){
echo $accountMask;
function updateAccountMask(){
然后我可以看到屏幕上回显的值。如果我这样移动......
if ($accountMask){
function updateAccountMask(){
echo $accountMask;
没有显示任何价值。
嗯......为什么会这样?我尝试了很多组合试图在函数范围内获取变量,但仍然没有运气。这是我最近尝试过的最直接的方法:
$accountMask = 'testing';
if ($accountMask){
function updateAccountMask(){
global $accountMask;
echo 'Account Mask= ' . $accountMask;
但是,我得到的所有输出都是Account Mask=
。是什么给了什么?!?
答案 0 :(得分:0)
好的,所以你基本上没有设置要添加到数据库表中的值。这应该是它的样子:
$input = JFactory::getApplication()->input;
// Change "varname" to the name of the input field
$accountMask = $input->post->get('varname');
if ($accountMask){
function updateAccountMask(){
$user = JFactory::getUser();
$db = JFactory::getDbo();
$userId = $user->id;
$query = $db->getQuery(true);
$fields = array(
$db->quoteName('cb_accountmask') . ' = ' .$accountMask
);
$conditions = array(
$db->quoteName('user_id') . ' = ' . $userId
);
$query->update($db->quoteName('#__comprofiler'))->set($fields)->where($conditions);
$db->setQuery($query);
$result = $db->query();
return $result;
}
updateAccountMask();
}
如您所见,我使用了$db->quoteName('cb_accountmask') . ' = ' .$accountMask
所以现在正在设置值。
希望这有帮助
答案 1 :(得分:0)
试试这个
$input = JFactory::getApplication()->input;
// Change "varname" to the name of the input field
$accountMask = $input->post->get('varname');
if ($accountMask)
{
self::updateAccountMask($accountMask);
}
function updateAccountMask($accountMask)
{
$user = JFactory::getUser();
$userId = $user->id;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$fields = array(
$db->quoteName('cb_accountmask') . ' = ' . $db->quote($accountMask);
);
$conditions = array(
$db->quoteName('user_id') . ' = ' . $userId;
);
$query->update($db->quoteName('#__comprofiler'))->set($fields)->where($conditions);
$db->setQuery($query);
$result = $db->execute();
return $result; // I'm not sure what you are returning here ... i would just return true on success, exception or false on error
}
有一件事是你应该做更多的检查,比如如果没有这样的用户会怎么做。