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 関数を使用する必要がありますか? どうすれば問題を解決できますか?