使用php脚本的Mysql事件

使用php脚本的Mysql事件,php,mysql,Php,Mysql,嗨,这是我的代码运行一个脚本概念是当用户第一次签入用户数据插入到一个名为tbl1的表中时,同时我们添加一个mysql事件,以便在几次之后来自tbl1的数据从tbl2移动,tbl1行数据将被删除。我为事件设置了一个cookie,以便它将在复选框sumit之后运行。我获取事件,我也获取事件客户端计算机上的cookie,当用户第一次单击复选框时,数据插入也可以,但问题是没有从数据库中删除数据,我的意思是从tbl1中删除数据,并且在3分钟后没有在tbl2中插入任何内容,因为我将事件设置为执行我的代码 这

嗨,这是我的代码运行一个脚本概念是当用户第一次签入用户数据插入到一个名为tbl1的表中时,同时我们添加一个mysql事件,以便在几次之后来自tbl1的数据从tbl2移动,tbl1行数据将被删除。我为事件设置了一个cookie,以便它将在复选框sumit之后运行。我获取事件,我也获取事件客户端计算机上的cookie,当用户第一次单击复选框时,数据插入也可以,但问题是没有从数据库中删除数据,我的意思是从tbl1中删除数据,并且在3分钟后没有在tbl2中插入任何内容,因为我将事件设置为执行我的代码

这是我的脚本,当任何注册用户点击复选框,然后他插入tbl1表,我们设置一个cookie并在36分钟后运行事件,事件将运行并将数据插入另一个名为tbl2的表中。我的代码是

 <form action="course01.php" method="POST">
    <input type="checkbox" name="chk1" value="701" />I am agree with the course terms and condition<br/>

    <input type="submit" name="submit" value="enrolment"/>

    </form>
    </body>
    </html>

    <?php
    include("config.php");
    session_start();
    $user=$_SESSION['sess_user'];
    $checkbox1=$_POST['chk1'];
    if ($_POST["submit"]=="enrolment")
    {
    $result = mysql_query("SELECT id,name,url FROM tbl0 WHERE id = '".$checkbox1."'");
    if (!$result) {
        echo 'Could not run query: ' . mysql_error();
        exit;
    }
    $row = mysql_fetch_row($result);

    echo $row[0]; 
    echo $row[1]; // the email value
    echo $row[2];

    setcookie('joytestcookie','".$user."',time()+3600);
    setcookie('joytestcookie2','".$row[1]."',time()+3600);
    $query= "INSERT INTO tbl1 (course_id,course_name,course_url,username,entry_date) values ('".$row[0]."','".$row[1]."','".$row[2]."','".$user."',localtime())";

    mysql_query($query) or die (mysql_error());

    $insertquery="CREATE EVENT $_cookie['joytestcookie2']
        ON SCHEDULE  AT CURRENT_TIMESTAMP + INTERVAL 3 MINUTE
        DO
          BEGIN
           insert into tbl2 (username,course_name) select username,couse_name from course_entry where name='".$_COOKIE['joytestcookie']."';
            delete from tbl1 where name ='".$_COOKIE['joytestcookie']."';
                  END";

     mysql_query($insertquery) or die (mysql_error());
    echo "Record is inserted";
    header("Location: z.php");  

    }

    ?>
tbl0是另一个表,因此无需担心。

我的答案

function rand_string( $length ) {
            $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  

            $size = strlen( $chars );
            for( $i = 0; $i < $length; $i++ ) {
                $str .= $chars[ rand( 0, $size - 1 ) ];
            }

            return $str;
        }

    $random=rand_string(5);

    $query= "INSERT INTO course_entry (course_id,course_name,course_url,username,entry_date,event_no) values ('".$row[0]."','".$row[1]."','".$row[3]."','".$user."',localtime(),'".$random."' )";
    mysql_query($query) or die (mysql_error());

    $res = mysql_query("SELECT event_no  FROM course_entry WHERE course_id='".$row[0]."' and username ='".$user."'");
    $joy =  mysql_fetch_row($res)   ;


    $insertquery="CREATE EVENT $joy[0]
        ON SCHEDULE  AT CURRENT_TIMESTAMP + INTERVAL 15 MINUTE
        DO
          BEGIN
           insert into course_finish (course_id, username, course_name) select username,course_name,course_id from course_entry where username = '".$user."';

    delete from course_entry where username = '".$user."';
          END";

     mysql_query($insertquery) or die (mysql_error());
    echo "Record is inserted";
    header("Location: member.php"); 

    }

如果存在严重的安全问题,则直接在SQL查询中使用$\u COOKIE。请使用pdo。稍后我将使用mysqli使用会话数据。代码工作正常,正如我所预期的那样,但存在一个问题,那就是事件名称,如何随机更改。。任何建议使用rand函数。gudgip不能使用rand函数。你能提供更详细的信息吗?不安全的代码,过时的mysql_uuuAPI,提供给位置标头的信息无效。。你基本上在任何地方都犯了错误-1因此,偶然发现这一点的人不会意外地复制这一暴行。