【问题标题】:Joomla 3.1 Database update query not workingJoomla 3.1 数据库更新查询不起作用
【发布时间】:2013-10-05 23:15:10
【问题描述】:

最近我正在为 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();
    } 

【问题讨论】:

  • 已解决:查看stackoverflow.com/questions/14531603/…的帖子后。我编了一些固定的测试值。结果查询是正确的,但查询中的 $data 变量没有数据。 $data['project_file'] = strtolower($file['name']['project_file']);从第一部分中删除了数组并且变量起作用了。

标签: mysql sql joomla3.0


【解决方案1】:

(由 cmets 中的 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'] ); 从第一部分中删除了数组并且变量起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多