[ad_1]
Tôi đang cố gắng lấy thông tin từ DB về tất cả các học sinh thi và xuất dữ liệu sang Csv nhưng tôi gặp phải lỗi này,
<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>
đây là mã tôi đã viết, xuất sang csv.php để tìm nạp dữ liệu,
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 // Check if the user is logged in 10 //(!isset($_SESSION['user_id'])) { 11 //Redirect or handle unauthorized access 12 //header('Location: ../session.php') 13 //exit(); 14 //} 15 16 // Set the content-type to CSV and specify the filename for download 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 // Get the user ID from the session 23 $userID = $_SESSION['userID']; 24 $examID = $_POST['examID']; 25 26 //echo "<pre>" . $userID . "<pre/>"; 27 //exit(); 28 29 // Fetch user responses to questions 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 //echo "<pre>" . $result . "<pre/>"; 76 //exit(); 77 78 // Create the output file (without saving it) 79 80 $dataFile = fopen('php://output', 'w'); 81 82 83 84 85 if ($result->num_rows > 0) { 86 87 //if ($result) { 88 // if ($result ->num_rows > 0) { 89 90 91 // Get the total possible mark 92 $markResult = $conn->query("SELECT total_mark FROM exam WHERE exam_id = $examID"); 93 $totalMark = $markResult->fetch_assoc()['total_mark']; 94 95 // Output the data 96 while ($row = $result->fetch_assoc()) { 97 fputcsv($dataFile, $row); 98 // } 99 } 100 101 // Output the header 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 // Close the file handle 110 fclose($dataFile); 111 112 // Close the database connection 113 mysqli_close($conn); 114 ?>
Những gì tôi đã thử:
đang cố gắng lấy thuộc tính ‘num_rows’ của phi đối tượng trong C:\wamp64
Giải pháp 1
Vấn đề là ở đó $result
không chứa bất cứ điều gì. Rất có thể lệnh gọi SQL ở dòng 74 không thành công nhưng bạn đã quên kiểm tra.
Giải pháp 2
Lỗi của bạn rất có thể xảy ra do việc thực thi truy vấn ‘mysqli_query($conn, $sql)’ của bạn không thành công và do đó, ‘$result’ không phải là một đối tượng có thuộc tính ‘num_rows’ của bạn. Bạn nên kiểm tra xem việc thực hiện truy vấn của mình có thành công hay không, thêm một số xử lý lỗi để kiểm tra xem có vấn đề gì không. Đảm bảo rằng đối tượng ‘$conn’ của bạn hợp lệ và được kết nối với cơ sở dữ liệu –
$result = mysqli_query($conn, $sql); if (!$result) { die('Error : ' . mysqli_error($conn)); }
[ad_2]
コメント