Joomla 3.1数据库更新查询不起作用

时间:2013-10-05 23:15:10

标签: mysql sql joomla3.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();
    } 

1 个答案:

答案 0 :(得分:0)

(OP在评论中回答。转换为社区wiki答案。见Question with no answers, but issue solved in the comments (or extended in chat)

OP写道:

  

解决:在审核帖子update record in database using jdatabase后,我制作了一些固定的测试值。事实证明查询是正确的,但查询中的$data变量没有数据。 $data['project_file'] = strtolower( $file['name']['project_file'] );从第一部分移除了数组,变量工作。