0

次のフィールドID、student_id、class、yearを含むstudent_classテーブルがあります 。毎年、 class = 4の行にid、student_id、class + 1、year + 1 を含む新しい行を追加して、 新しい行の追加を停止したい
. 私はこのようなことを試しましたが、私が望む結果が得られません

SET GLOBAL event_scheduler = ON;

 CREATE EVENT increment_student_form
 ON SCHEDULE 
 STARTS '2013-03-22 11:45:00'
 EVERY 1 YEAR

 DO 

 $students=array();
 $class=array();
 $stud=select * from student_class where class<4;
        $row=mysql_fetch_array($stud);
    $students[]=$row['student_id'];
    $class[]=$row['class'];
    for($i=0;$i<sizeof($students);$i++){

 INSERT into student class(id,student_id,class,year) values('','$student[i]','$class[i]+1','$year+1') 
 }
4

3 に答える 3

0

Begin Endイベント本文に使用

DO 
    Begin
    ...
    ...
    END

編集1:selectステートメントにも引用符を使用してください

$stud="select * from student_class where class<4";
于 2013-04-03T11:16:15.127 に答える
0

あなたのコードにいくつかのエラーを発見しました

  1. 現在のコードは最初のレコードのみをフェッチします..mysql_fetch_array はループ内にある必要があります。
  2. $year がどこにも定義されていません。
  3. mysql イベント処理と php コードを混在させる方法が正しくありません。

このコードを使用してみてください

 $stud="select * from student_class where class<4";
 while ($row=mysql_fetch_array($stud))
 {
  $sql = "INSERT into student class(id,student_id,class,year) values('','{$row['student_id']}','{$row['class']}','{$row['year']}+1')" ;
  mysql_query($sql);
 }

mysql イベント処理よりも、この php スクリプトでクローン ジョブを使用する方が良いことをお勧めします。

于 2013-04-03T11:17:15.573 に答える