[英]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.