[ad_1]
أحاول جلب معلومات من قاعدة البيانات حول جميع الاختبارات التي يأخذها الطلاب وتصدير البيانات إلى ملف CSV ولكني أتلقى هذا الخطأ،
<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>
هذا هو الكود الذي كتبته، Export-to-csv.php لجلب البيانات،
بي أتش بي
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 ?>
ما حاولت:
محاولة الحصول على خاصية “num_rows” لغير الكائن في C:\wamp64
الحل 1
المشكلة هي $result
لا يحتوي على أي شيء. على الأرجح فشل استدعاء SQL في السطر 74، لكنك نسيت التحقق منه.
الحل 2
من المرجح أن يحدث الخطأ بسبب فشل تنفيذ الاستعلام الخاص بك ‘mysqli_query($conn, $sql)’، ونتيجة لذلك، فإن ‘$result’ ليس كائنًا بخاصية ‘num_rows’ الخاصة بك. يجب عليك التحقق مما إذا كان تنفيذ الاستعلام الخاص بك ناجحًا، وإضافة بعض معالجة الأخطاء للتحقق من الخطأ الذي يحدث. تأكد من أن كائن ‘$conn’ الخاص بك صالح ومتصل بقاعدة البيانات –
بي أتش بي
$result = mysqli_query($conn, $sql); if (!$result) { die('Error : ' . mysqli_error($conn)); }
[ad_2]
コメント