0

最近我正在为 joomla 3.1 后端制作一个上传组件。基于How to Save Uploaded File's Name on Database 我成功地将文件移动到硬盘驱动器,但是根据上面发布的帖子,我无法让更新查询工作。

我没有收到任何 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();
    } 
4

1 回答 1

0

(由评论中的 OP 回答。转换为社区 wiki 答案。请参阅没有答案的问题,但问题在评论中解决(或在聊天中扩展)

OP写道:

已解决:在使用 jdatabase 查看数据库中的更新后记录后,我编写了一些固定的测试值。事实证明查询是正确的,但查询$data中的变量没有数据。$data['project_file'] = strtolower( $file['name']['project_file'] );从第一部分中删除了数组并且变量起作用了。

于 2015-01-31T11:03:39.257 回答