[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 用于获取数据,
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 ?>
我尝试过的:
尝试获取 C:\wamp64 中非对象的属性“num_rows”
解决方案1
问题是 $result
不包含任何东西。 最有可能的是第 74 行的 SQL 调用失败,但您忘记检查它。
解决方案2
您的错误很可能是因为您的查询执行“mysqli_query($conn, $sql)”失败,因此“$result”不是具有“num_rows”属性的对象。 您应该检查查询执行是否成功,添加一些错误处理来检查出了什么问题。 确保您的“$conn”对象有效并连接到数据库 –
PHP
$result = mysqli_query($conn, $sql); if (!$result) { die('Error : ' . mysqli_error($conn)); }
[ad_2]
コメント