簡體   English   中英

無法連接到Joomla數據庫以進行自定義更新功能

[英]Having trouble connecting to Joomla database for custom update function

這是給我帶來麻煩的代碼片段:

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= 是什么賦予了?!?

好的,因此您基本上不需要設置要添加到數據庫表中的值。 它應該是這樣的:

$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 $db->quoteName('cb_accountmask') . ' = ' .$accountMask因此現在正在設置值。

希望這可以幫助

嘗試這個

$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
    }

一件事是您可能應該進行更多檢查,例如如果沒有這樣的用戶怎么辦。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM