0

PHP の配列に問題があります。具体的には、データベース内の 2 つの配列を比較して、それらの違いを取得したいと考えています。差分はデータベースに保存されます。私はphpが初めてです。

私のコードは次のようになります:

これは、配列を取得する場所です。

$year = $_POST['year'];
$course = $_POST['Course'];
$block = $_POST['block'];

$cheetah = mysql_query("SELECT stud_valid_nos FROM exam_students WHERE stud_subject_id = '$subject_id'")or die(mysql_error());  
while($validnos = mysql_fetch_array($cheetah)){
    $nos = $validnos['stud_valid_nos'];
    }
$tiger = mysql_query("SELECT sec_id_num FROM exam_sections WHERE sec_year = '$year' AND sec_course = '$course' AND sec_block = '$block'")or die(mysql_error()); 
while($idnum = mysql_fetch_array($tiger)){
    $id = $idnum['stud_valid_nos'];
    }

if($nos ???? $id){ ///this is where the arrays being compared.

inserts only the difference

}

else{

inserts the full array in the database
}

アップデート

私はもう配列を使用しないことに決めました.おそらくあなたの何人かはポイントを持っているので、コードを再編成しましたが、まだ機能していません. データベースに学生番号を重複なく追加するにはどうすればよいですか?

ここに私の新しいコードがあります:

$cheetah = mysql_query("SELECT stud_valid_nos FROM exam_students WHERE stud_subject_id = '$subject_id'")or die(mysql_error());  
if(mysql_num_rows($cheetah)>0){

while($validnos = mysql_fetch_array($cheetah)){
    $nos = $validnos['stud_valid_nos'];

    $tiger = mysql_query("SELECT sec_id_num,sec_email FROM exam_sections WHERE sec_id_num <> '$nos' AND sec_year = '$year' AND sec_course = '$course' AND sec_block = '$block'")or die(mysql_error());
while($idnum = mysql_fetch_assoc($tiger)){
    $id = $idnum['sec_id_num'];
    $email = $idnum['sec_email'];


    $insert = mysql_query("INSERT INTO exam_students (stud_valid_nos, stud_email, stud_subject_id, stud_group_id ) VALUES ('$id','$email','$subject_id','$examinergroupid')")or die(mysql_error());
    $last = mysql_insert_id();
    $password = genRandomString();
    $rawr = mysql_query("INSERT INTO exam_passwords (pass_user_id,pass_password,pass_subject_id,pass_exam_id) VALUES ('$last','$password', '$subject_id', 0)")or die(mysql_error());

    }

    }

mysql_query で NOT IN または IS NULL 関数を使用する必要がありますか? どうすれば問題を解決できますか?

4

3 に答える 3

0
$diff = array_diff($nos, $id);
if (count($diff)) {
     // insert diff
} else {
     // insert full array
}

http://php.net/manual/en/function.array-diff.php

于 2013-09-17T06:14:13.943 に答える