我有一份准备好的声明,INNER加入7个表并发送收集所有信息的电子邮件。每个表每人只能有一条记录,但uploaded_files表可以有一个人的许多记录。
除非upload_files表中有多个记录,否则我只会收到一个空数组错误而电子邮件不会发送。所以我假设我需要遍历我的循环以在uploaded_field表中找到多个记录,但我似乎无法弄明白。
因此除了$ file_id,$ file_name,$ file_type,$ file_size和$ file_path
之外,每个变量只能有一个我稍微简化了下面的代码,因此每个表中的每个变量都不会掩盖实际问题。感谢您提供的任何帮助。
if(!mysqli_connect_errno()) {
if($stmt = $db_connect->prepare("SELECT
s.student_id, s.student_first_name, s.student_last_name,
y.agency_id, y.user_email, y.agency_name, y.agency_rep_name, y.agency_phone,
p.personal_id, p.english_name, p.gender, p.date_of_birth, p.fathers_name, p.fathers_email, p.fathers_date_of_birth, p.fathers_phone_number, p.fathers_occupation, p.mothers_name, p.mothers_email, p.mothers_date_of_birth, p.mothers_phone_number, p.mothers_occupation, p.address_1, p.address_2, p.city, p.province, p.country, p.postal_code, p.home_phone, p.mobile_phone, p.in_grade, p.starting_grade, p.medical_insurance, p.homestay_placement,
e.emergency_id, e.emerg_first_name, e.emerg_last_name, e.emerg_email, e.emerg_relationship, e.emerg_home_phone, e.emerg_mobile_phone, e.emerg_address_1, e.emerg_address_2, e.emerg_postal_code, e.emerg_city, e.emerg_province, e.emerg_country,
a.academic_id, a.school_choice_1, a.school_choice_2, a.school_choice_3, a.preferred_community, a.study_duration, a.needs_canadian_credits, a.arrival_date, a.final_school_date, a.departure_date, a.years_of_english, a.speaking_english, a.writing_english, a.subject_area_1, a.subject_area_2, a.subject_area_3, a.subject_area_4, a.subject_area_5, a.subject_area_6, a.required_courses, a.graduation_goals, a.education_goals, a.semester_start, a.legalization,
m.aboutme_id, m.nationality, m.religion, m.language_at_home, m.siblings, m.how_many_siblings, m.lived_in_english_country, m.which_english_country, m.how_long_in_english_country, m.personality, m.family_preference, m.dietary_requirements, m.my_dietary_requirements, m.food_preference, m.fav_foods, m.least_fav_foods, m.reading_genre, m.social_media, m.additional_info, m.hobbies, m.play_instrument, m.which_instrument, m.like_sports, m.which_sports, m.belong_to_clubs, m.which_clubs, m.religious_service, m.prefer_religious_service, m.household_chores, m.have_curfew, m.weekday_curfew, m.weekend_curfew, m.expectations, m.been_away_from_family, m.concerns_about_canada, m.allergies_medical_disabilities, m.airport_pickup,
f.file_id, f.file_name, f.file_type, f.file_size, f.file_path
FROM students AS s
INNER JOIN agency AS y
INNER JOIN personal_information AS p USING(student_id)
INNER JOIN emergency_information AS e USING(student_id)
INNER JOIN academic_information AS a USING(student_id)
INNER JOIN aboutme_information AS m USING(student_id)
INNER JOIN uploaded_files AS f USING(student_id)
WHERE p.student_id AND
e.student_id AND
a.student_id AND
m.student_id AND
f.student_id = ? AND
y.agency_id = ?")
or die('Something Went Wrong')) {
$stmt->bind_param('ii', $student_id, $agency_id);
/* Execute it */
$stmt->execute();
/*Store Results*/
$stmt->store_result();
/* Get Number of Rows */
$num_of_rows = $stmt->num_rows;
$stmt->bind_result($student_id, $student_first_name, $student_last_name, $agency_id, $user_email, $agency_name, $agency_rep_name, $agency_phone, $personal_id, $english_name, $gender, $date_of_birth, $fathers_name, $fathers_email, $fathers_date_of_birth, $fathers_phone_number, $fathers_occupation, $mothers_name, $mothers_email, $mothers_date_of_birth, $mothers_phone_number, $mothers_occupation, $address_1, $address_2, $city, $province, $country, $postal_code, $home_phone, $mobile_phone, $in_grade, $starting_grade, $medical_insurance, $homestay_placement, $emergency_id, $emerg_first_name, $emerg_last_name, $emerg_email, $emerg_relationship, $emerg_home_phone, $emerg_mobile_phone, $emerg_address_1, $emerg_address_2, $emerg_postal_code, $emerg_city, $emerg_province, $emerg_country, $academic_id, $school_choice_1, $school_choice_2, $school_choice_3, $preferred_community, $study_duration, $needs_canadian_credits, $arrival_date, $final_school_date, $departure_date, $years_of_english, $speaking_english, $writing_english, $subject_area_1, $subject_area_2, $subject_area_3, $subject_area_4, $subject_area_5, $subject_area_6, $required_courses, $graduation_goals, $education_goals, $semester_start, $legalization, $aboutme_id, $nationality, $religion, $language_at_home, $siblings, $how_many_siblings, $lived_in_english_country, $which_english_country, $how_long_in_english_country, $personality, $family_preference, $dietary_requirements, $my_dietary_requirements, $food_preference, $fav_foods, $least_fav_foods, $reading_genre, $social_media, $additional_info, $hobbies, $play_instrument, $which_instrument, $like_sports, $which_sports, $belong_to_clubs, $which_clubs, $religious_service, $prefer_religious_service, $household_chores, $have_curfew, $weekday_curfew, $weekend_curfew, $expectations, $been_away_from_family, $concerns_about_canada, $allergies_medical_disabilities, $airport_pickup, $file_id, $file_name, $file_type, $file_size, $file_path);
if($stmt->num_rows !==1){
$error_msg['finalize_button'] = 'There was no student found with a completed application.';
}//End If no Rows are found
else{
while($stmt->fetch()){
$body .= '<li><span>'.$student_first_nam.'</span></li>';
$body .= '<li><span>'.$agency_name.'</span></li>';
$body .= '<li><span>'.$english_name.'</span></li>';
$body .= '<li><span>'.$emerg_first_name.'</span></li>';
$body .= '<li><span>'.$school_choice_1.'</span></li>';
$body .= '<li><span>'.$religion.'</span></li>';
$body .= '<li><span>'.$file_id.'</span></li>';
$body .= '<li><span>'.$file_name.'</span></li>';
$body .= '<li><span>'.$file_type.'</span></li>';
$body .= '<li><span>'.$file_size.'</span></li>';
$body .= '<li><span>'.$file_path.'</span></li>';
}
}
}
我觉得自己走在了正确的轨道上,但它不起作用。对小说感到抱歉,但我想尽可能地解释
答案 0 :(得分:0)
您的查询有问题。
WHERE p.student_id AND e.student_id AND a.student_id AND m.student_id AND f.student_id = ?
没有做你想做的事。你的意思是
WHERE p.student_id = ? AND e.student_id = ? AND a.student_id = ? AND m.student_id = ? AND f.student_id = ?
但是,您根本不需要将所有这些字段放在WHERE
子句中,因为您使用相同的标准加入了这些表。
所有学生,代理机构等都会重复与相关文件记录一样多次,因此您需要在显示数据时牢记这一点。