繁体   English   中英

仅读取一条记录和一张包含多条记录的表

[英]Fetch Tables with Only One Record and One Table with Several Records

我已经准备好声明,INNER JOINS 7表并发送一封电子邮件,其中收集了所有信息。 每个表每人只能有一个记录,但upload_files表可以有一个人的许多记录。

一切正常,除非当upload_files表中有多个记录时,我仅收到一个空数组错误,并且电子邮件未发送。 因此,我假设我需要遍历循环以在upload_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>';
            }
    }
}

我觉得自己处在正确的轨道上,但是工作并不正常。 对不起这本书,但我想尽我所能

您的查询有问题。

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子句中,因为您使用的是相同的条件加入了这些表。

所有学生,代理机构等将重复进行与相关文件记录相同的次数,因此在显示数据时需要牢记这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM