【问题标题】:osclass SQL Inserting data twiceosclass SQL 插入数据两次
【发布时间】:2016-04-23 08:09:53
【问题描述】:

当我插入数据然后浏览表时我有这个osclass表,数据已经输入了两次,所以我得到了同一个表的两个id。

CREATE TABLE  /*TABLE_PREFIX*/t_table_log(
    pk_i_id INT NOT NULL AUTO_INCREMENT ,
    fk_i_user_id INT NULL ,
    fk_i_item_id INT NULL ,
    s_email VARCHAR( 200 ) NULL ,
    s_status VARCHAR( 20 ) NOT NULL ,

    PRIMARY KEY(pk_i_id)
) ENGINE=InnoDB DEFAULT CHARACTER SET 'UTF8' COLLATE 'UTF8_GENERAL_CI';

这是我的 php 代码

$conn = getConnection();
$conn->osc_dbExec("INSERT INTO %st_table_log (fk_i_item_id, fk_i_user_id, s_email, s_status ) VALUES ('".$_SESSION['itemid']."','".$_SESSION['userid']."','".$response['senderEmail']."','".$response['status']."')", DB_TABLE_PREFIX) ;
$item_url =  osc_item_url() ;
    $name = osc_page_title() ;
    $subject = (__("Hello",'osclass'));
    $email = osc_logged_admin_email();
        $messagesend =" my message";
          $params = array(
            'subject' => $subject
            ,'to' => $email
            ,'to_name' =>$name
            ,'body' => $messagesend
            ,'alt_body' => strip_tags($messagesend)
       ) ;
        osc_sendMail($params) ;

【问题讨论】:

    标签: php osclass


    【解决方案1】:

    您的代码在哪里?

    您可能需要检查这些内容:

    • autocron: 这是一个无需配置 crontab 即可运行 Cron 的 Osclass 功能。前往Settings > General 并检查是否检查了 autocron。它会为它发出一个新的 HTTP 请求,因此您的代码可能会运行两次。
    • ajax:您可能在启用的插件或主题之一中有一些 ajax 查询,每次加载时都会发出请求并运行您的代码两次。

    据我所知,您可能希望使用'init' 挂钩来确保它执行一次。像这样的:

    osc_add_hook('init', function () {
      $session = Session::newInstance();
      $userId = $session->_get('userid');
      $itemId = $session->_get('itemid');
    
      // Do something.
    });
    

    另外,试着看看DAO in Osclassplugin development,这里是a tutorial that will get you through Osclass plugin development and the use of DAO

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      • 2014-08-23
      • 1970-01-01
      • 2017-09-09
      • 2010-10-12
      相关资源
      最近更新 更多