2016-04-23 53 views
1

我有這個osclass表時我插入數據,然後瀏覽數據已輸入兩次表,所以我會得到相同的表的兩個ID。osclass SQL插入數據的兩倍

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) ; 

回答

0

哪裏是位於你的代碼?

您可能要檢查這些東西:

  • autocron:這是一個Osclass特徵運行的Cron無需配置的crontab。頭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