dosc9472 2016-06-13 09:35
浏览 46

Joomla使用JDatabase插入数据,其中表名存储在php变量中

Description: I'm creating the database name automatically consisting of main table name and appending the full name relative to what is selected in dropdown menus.

Code:

       if ($leagueSelect === $result['leagueName'] && $divisionSelect === $result['divisionID'] && $tourType === 'robin') {

            $tableName = "footleague_".$leagueSelect.$divisionSelect;
            /****CREATE TABLE****/

            $db = JFactory::getDBO();
            $query = $db->getQuery(true);

            $query = "CREATE TABLE IF NOT EXISTS `".( $tableName )."` (
                        `id` INT(11) NOT NULL AUTO_INCREMENT,
                        `round` TEXT NULL,
                        `logoHome` TEXT NULL,
                        `home` TEXT NULL,
                        `usrHome` TEXT NULL,
                        `scoreHome` INT(11) NULL,
                        `scoreAway` INT(11) NULL,
                        `logoAway` TEXT NULL,
                        `away` TEXT NULL,
                        `usrAway` TEXT NULL,
                        `confirm` INT(11),
                      PRIMARY KEY (`id`)
                )";

            $db->setQuery($query);

            $result = $db->execute();

            if ($result == true) {
                echo 'Table created successfully!';    
            }else{
                echo "Something went wrong with table creation. Please try again.";
            } 
    }

This works perfectly and it creates a new table and all of the columns. The problem comes when storing data into this table. I need to be able to take the table name which is stored in a variable and store the data into it. Same as in CREATE TABLE.

I tried it like this:

    $query = "INSERT INTO ".$tableName." (round, logoHome, home, usrHome, logoAway, away, usrAway),
                              VALUES ('".$round."' , '".$logoHome."' , '".$home."' , '".$usrHome."' , '".$logoAway."' , '".$away."' , '".$usrAway."')";

                    $db->setQuery($query);

                    $result = $db->execute();

...but it doesn't give me any errors and it doesn't store the data.

I tried also with stdClass object but I don't know how to get the table name in there:

    $data = new stdClass();
    $data->round = $round;
    $data->home = $home;
    $data->usrHome = $usrHome;
    $data->logoHome = $logoHome;
    $data->away = $away;
    $data->usrAway = $usrAway;
    $data->logoAway = $logoAway;

    $db = JFactory::getDBO();
    $db->insertObject($tableName, $data);

How can I get this to work?

Thank you.

  • 写回答

1条回答 默认 最新

  • du5739 2016-06-16 20:05
    关注

    I solved it like this:

        $data = new stdClass();
        $data->round = $round;
        $data->home = $home;
        $data->usrHome = $usrHome;
        $data->logoHome = $logoHome;
        $data->away = $away;
        $data->usrAway = $usrAway;
        $data->logoAway = $logoAway;
    
        $db = JFactory::getDBO();
        $db->insertObject($tableName, $data);
    
        if ($result == true) {
             echo 'Tournament was created successfully!';
        }else{
             echo 'ERROR!';
        }
    
    评论

报告相同问题?

悬赏问题

  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了