簡體   English   中英

准備好的語句未在 PHP 中執行,但在 SQL 控制台上完美運行

[英]Prepared statement not executing in PHP but works on SQL console perfectly

function examResult($student_id, $exam_id){
        global $conn;
        
        $stmt = $conn->prepare("SELECT SUM(CASE WHEN answers.answered_option=questions.correct_option THEN questions.marks ELSE 0 END) AS obtain, exams.exam_name, exams.total_marks, exams.pass_marks FROM exams INNER JOIN questions ON exams.id=questions.exam_id INNER JOIN answers ON answers.question_id=questions.id WHERE answers.student_id = ? AND exams.id = ? ");
        
        
        if($stmt){
            return 'ok';
            $stmt->bind_param('ii', $student_id, $exam_id);
            $stmt->execute();
            $result = $stmt->get_result();
            if($result){
                $row = $result->fetch_assoc();
                return $row;
            }
        } else{
            return false;
        }

    }

我從上面的 function 期待“好的”,但它返回錯誤。 這意味着 $stmt 沒有執行。 我的兩個參數 $student_id 和 $exam_id 也很好。

但是,如果我在我的 SQL 控制台中執行它,如下所示,它可以完美運行。

SELECT SUM(CASE WHEN answers.answered_option=questions.correct_option THEN questions.marks ELSE 0 END) AS obtain, exams.exam_name, exams.total_marks, exams.pass_marks FROM exams INNER JOIN questions ON exams.id=questions.exam_id INNER JOIN answers ON answers.question_id=questions.id WHERE answers.student_id = 18 AND exams.id = 24

在此處輸入圖像描述

function examResult($student_id, $exam_id){
        global $conn;
        
        $stmt = $conn->prepare("SELECT SUM(CASE WHEN answers.answered_option=questions.correct_option THEN questions.marks ELSE 0 END) AS obtain, exams.exam_name, exams.total_marks, exams.pass_marks FROM exams INNER JOIN questions ON exams.id=questions.exam_id INNER JOIN answers ON answers.question_id=questions.id WHERE answers.student_id = ? AND exams.id = ? ");
        
        
        if($stmt){
            return 'ok';
            $stmt->bind_param('ii', $student_id, $exam_id);
            $stmt->execute();
            $result = $stmt->get_result();
            if($result){
                $row = $result->fetch_assoc();
                return $row;
            }
        } else{
            return false;
        }

    }

我從上面的 function 期待“好的”,但它返回錯誤。 這意味着 $stmt 沒有執行。 我的兩個參數 $student_id 和 $exam_id 也很好。

但是,如果我在我的 SQL 控制台中執行它,如下所示,它可以完美運行。

SELECT SUM(CASE WHEN answers.answered_option=questions.correct_option THEN questions.marks ELSE 0 END) AS obtain, exams.exam_name, exams.total_marks, exams.pass_marks FROM exams INNER JOIN questions ON exams.id=questions.exam_id INNER JOIN answers ON answers.question_id=questions.id WHERE answers.student_id = 18 AND exams.id = 24

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM