最近我正在爲joomla 3.1後端製作一個上傳組件。 基於How to Save Uploaded File's Name on Database 我成功地將文件移動到硬盤驅動器, 但是我不能讓更新查詢根據上面張貼的帖子工作。Joomla 3.1數據庫更新查詢不起作用
我沒有得到任何SQL錯誤和保存工作,但以某種方式忽略數據庫部分。
我真的很希望我錯過了一些明顯的東西。 (順便說一句,我不知道查詢的Joomla方式非常好)
在phpmyadmin
下面的查詢工作:
UPDATE hmdq7_mysites_projects
SET project_file = 'test'
WHERE id IN (3);
我曾嘗試以下查詢:
$id = JRequest::getVar('id');
$db =& JFactory::getDBO();
$sql = "UPDATE hmdq7_mysites_projects
SET project_file =' " . $filename. "'
WHERE id IN (".$id.");";
$db->setQuery($sql);
$db->query();
$colum = "project_file";
$id = JRequest::getVar('id');
$data = JRequest::getVar('jform', null, 'post', 'array');
$data['project_file'] = strtolower($file['name']['project_file']);
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$query->update('#__mysites_projects');
$query->set($column.' = '.$db->quote($data));
$query->where('id'.'='.$db->quote($id));
$db->setQuery($query);
$db->query();
這裏是當前的代碼:
class MysitesControllerProject extends JControllerForm
{
function __construct() {
$this->view_list = 'projects';
parent::__construct();
}
function save(){
// ---------------------------- Uploading the file ---------------------
// Neccesary libraries and variables
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');
$path= JPATH_SITE . DS . "images";
// Create the gonewsleter folder if not exists in images folder
if (!JFolder::exists(JPATH_SITE . "/images" )) {
JFactory::getApplication()->enqueueMessage($path , 'blue');
}
// Get the file data array from the request.
$file = JRequest::getVar('jform', null, 'files', 'array');
// Make the file name safe.
$filename = JFile::makeSafe($file['name']['project_file']);
// Move the uploaded file into a permanent location.
if ($filename != '') {
// Make sure that the full file path is safe.
$filepath = JPath::clean(JPATH_SITE . "/images/" . $filename);
// Move the uploaded file.
JFile::upload($file['tmp_name']['project_file'], $filepath);
$colum = "project_file";
$id = JRequest::getVar('id');
$data = JRequest::getVar('jform', null, 'post', 'array');
$data['project_file'] = strtolower($file['name']['project_file']);
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$query->update('#__mysites_projects');
$query->set($column.' = '.$db->quote($data));
$query->where('id'.'='.$db->quote($id));
$db->setQuery($query);
$db->query();
}
// ---------------------------- File Upload Ends ------------------------
JRequest::setVar('jform', $data);
return parent::save();
}
解決:審查後http://stackoverflow.com/questions/14531603/update-record-in-database-using-jdatabase?rq=1。我編寫了一些固定的測試值。原來查詢是正確的,但查詢中的$ data varible沒有數據。 $ data ['project_file'] = strtolower($ file ['name'] ['project_file']);從第一部分刪除數組和可變工作。 – user2617187