当我插入数据然后浏览数据输入两次的表时,我有这个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) ;
你的代码在哪里?
您可能需要检查以下内容:
-
autocron:这是一个Osclass功能,无需配置crontab即可运行Cron。前往
Settings > General
并检查是否选中了独裁者。它为它发出新的 HTTP 请求,因此您的代码可能会运行两次。 - Ajax:您可能在启用的插件或主题之一中有一些 Ajax 查询,该查询在每次加载时发出请求并运行代码两次。
据我所知,您可能希望使用 'init'
钩子来确保它执行一次。像这样:
osc_add_hook('init', function () {
$session = Session::newInstance();
$userId = $session->_get('userid');
$itemId = $session->_get('itemid');
// Do something.
});
另外,尝试看看 Osclass 和插件开发中的 DAO,这里有一个教程,可以让您完成 Osclass 插件开发和 DAO 的使用。