I am trying to fetch information from DB about all exam student takes and export the data to Csv but i am getting this error,
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Trying to get property 'num_rows' of non-object in C:\wamp64\www\online-exam-portal\code\manage-exam\_export-to-csv.php on line 85</th></tr>
here is the code i wrote, export-to-csv.php to fetch the data,
1 <?php
2 require_once '../connect.php';
3 require_once '../session.php';
4
5 ini_set('display_errors', 1);
6 ini_set('display_startup_errors', 1);
7 error_reporting(E_ALL);
8
9
10
11
12
13
14
15
16
17 header("Content-type: application/csv");
18 header("Content-Disposition: attachment; filename=user_responses.csv");
19 header("Pragma: no-cache");
20 header("Expires: 0");
21
22
23 $userID = $_SESSION['userID'];
24 $examID = $_POST['examID'];
25
26
27
28
29
30 $sql = "SELECT
31 'Multi-choice' AS exam_type,
32 mcq.question AS question_text,
33 mcq.correct_answer AS correct_answer,
34 mcqr.response AS chosen_option,
35 mcqr.score AS marks
36 FROM
37 multi_choice_question mcq
38 INNER JOIN multi_choice_response mcqr ON mcq.exam_id = mcqr.exam_id
39 AND mcq.question_no = mcqr.question_no
40 WHERE
41 mcqr.assignee_id = '$userID'
42 AND mcq.exam_id = $examID
43
44 UNION
45
46 SELECT
47 'Fill in the blank' AS exam_type,
48 fiq.question AS question_text,
49 fir.response AS chosen_option,
50 fir.score AS marks
51 FROM
52 fill_in_question fiq
53 INNER JOIN fill_in_response fir ON fiq.exam_id = fir.exam_id
54 AND fiq.question_no = fir.question_no
55 WHERE
56 fir.assignee_id = '$userID'
57 AND fiq.exam_id = $examID
58
59 UNION
60
61 SELECT
62 'Theory' AS exam_type,
63 tq.question AS question_text,
64 tr.response AS chosen_option,
65 tr.score AS marks
66 FROM
67 theory_question tq
68 INNER JOIN theory_response tr ON tq.exam_id = tr.exam_id
69 AND tq.question_no = tr.question_no
70 WHERE
71 tr.assignee_id = '$userID'
72 AND tq.exam_id = $examID";
73
74 $result = mysqli_query($conn, $sql);
75
76
77
78
79
80 $dataFile = fopen('php://output', 'w');
81
82
83
84
85 if ($result->num_rows > 0) {
86
87
88
89
90
91
92 $markResult = $conn->query("SELECT total_mark FROM exam WHERE exam_id = $examID");
93 $totalMark = $markResult->fetch_assoc()['total_mark'];
94
95
96 while ($row = $result->fetch_assoc()) {
97 fputcsv($dataFile, $row);
98
99 }
100
101
102 fputcsv($dataFile, array("QUESTION TYPE", "QUESTION", "CORRECT ANSWER", "CHOSEN OPTION", "SCORE(out of $totalMarks)"));
103
104 }
105 else {
106 echo "0 results";
107 }
108
109
110 fclose($dataFile);
111
112
113 mysqli_close($conn);
114 ?>
What I have tried:
trying to get property 'num_rows' of non-object in C:\wamp64