Notice: Undefined index: subject in C:\xampp\htdocs\tests\main_search.php on line 18
Warning: implode(): Invalid arguments passed in C:\xampp\htdocs\tests\main_search.php on line 18
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\tests\main_search.php on line 29
1<?PHP2$class=filter_input(INPUT_POST,"class",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);3$subject=filter_input(INPUT_POST,"subject",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);4$sql="select students.name, classes.name FROM students ";5$sql.="JOIN classes ON students.class_id = classes.id ";6$sql.="JOIN scores ON students.id = scores.student_id ";7$sql.="WHERE 1 ";8$params=[];9if(!is_null($class)){10$sql.="and classes.name in (".implode(",",array_fill(0,count($class),"?")).") ";11$params_class=[str_repeat('s',count($class))];12$params=array_merge($params,$params_class);13}14if(!is_null($subject)){15$sql.="and classes.name in (".implode(",",array_fill(0,count($subject),"?")).") ";16}17print$sql;18?>19<formmethod="post">20<inputtype="checkbox"name="class[]"value="A">A
21<inputtype="checkbox"name="class[]"value="B">B
22<inputtype="checkbox"name="class[]"value="C">C<br>23<inputtype="checkbox"name="subject[]"value="janpanese">国語<br>24<inputtype="checkbox"name="subject[]"value="math">数学<br>25<inputtype="checkbox"name="subject[]"value="science">理科<br>26<inputtype="checkbox"name="subject[]"value="social">社会<br>27<inputtype="checkbox"name="subject[]"value="english">英語<br>28<inputtype="submit"name="search"value="検索"><br>29<inputtype="submit"name="back"value="戻る"><br>30</form>
組み込み
一応ざっくり組み込んでみました
環境にあわせて調整してください
PHP
1<?PHP2$class=filter_input(INPUT_POST,"class",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);3$subject=filter_input(INPUT_POST,"subject",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);45$sql="select students.name, classes.name FROM students ";6$sql.="JOIN classes ON students.class_id = classes.id ";7$sql.="JOIN scores ON students.id = scores.student_id ";8$sql.="WHERE 1 ";9$params=[];10$data=[];11if(!is_null($class)){12$sql.="and classes.name in (".implode(",",array_fill(0,count($class),"?")).") ";13if(!isset($params[0]))$params[0]="";14$params[0].=str_repeat('s',count($class));15$data=array_merge($data,$class);16}17if(!is_null($subject)){18$sql.="and classes.name in (".implode(",",array_fill(0,count($subject),"?")).") ";19if(!isset($params[0]))$params[0]="";20$params[0].=str_repeat('s',count($subject));21$data=array_merge($data,$subject);22}23print$sql;24print_r($params);2526$mysqli=newmysqli("localhost","myuser","mypass","mydb");27$stmp=$mysqli->prepare($sql);28foreach($dataas$key=>$val){29$params[]=&$data[$key];30}31call_user_func_array([$stmt,'bind_param'],$params);32$stmt->execute();33$res=$stmt->get_result();34$rows=$res->fetch_all(MYSQLI_ASSOC);35print_r($rows);3637?>38<formmethod="post">39<inputtype="checkbox"name="class[]"value="A">A
40<inputtype="checkbox"name="class[]"value="B">B
41<inputtype="checkbox"name="class[]"value="C">C<br>42<inputtype="checkbox"name="subject[]"value="janpanese">国語<br>43<inputtype="checkbox"name="subject[]"value="math">数学<br>44<inputtype="checkbox"name="subject[]"value="science">理科<br>45<inputtype="checkbox"name="subject[]"value="social">社会<br>46<inputtype="checkbox"name="subject[]"value="english">英語<br>47<inputtype="submit"name="search"value="検索"><br>48<inputtype="submit"name="back"value="戻る"><br>49</form>50
回答ありがとうございます
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\tests\main_search.php on line 29
のように警告文がでました