2016-03-04 59 views
-1

我不斷收到此錯誤消息:又一 'SQLSTATE [HY093]:無效參數數:參數沒有被定義的'

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in [CENSORED]/add_test.php:93 Stack trace: #0 [CENSORED]/add_test.php(93): PDOStatement->execute() #1 {main} thrown in [CENSORED]/add_test.php on line 93

的代碼如下:

$test_name = $_POST['test_name']; 
    $start_date = $_POST['start_date']; 
    $start_time = $_POST['start_time']; 
    $end_date = $_POST['end_date']; 
    $end_time = $_POST['end_time']; 
    $teacher_id = $_POST['teacher_id']; 

    if(isset($_POST['test'])){ 
     $exam_mode = "1"; 
    } 

    else{ 
     $exam_mode = "0"; 
    } 

    $subject = $_POST['subject']; 
    $max_score = $_POST['maxs']; 
    $qtext = $_POST['qtext']; 
    $qtitle = $_POST['qtitle']; 
    $critsel = $_POST['criteria_selector']; 
    $crita = $_POST['criteria']; 
    $edit = $_POST['editable_response']; 
    $pinnumber = mt_rand(1000000,9999999); 

    $start_datetime = $start_date; 
    $start_datetime .= ":"; 
    $start_datetime .= $start_time; 
    $true_start_time = date_create_from_format("d.m.Y:H.i",$start_datetime); 
    $db_start_time = $true_start_time->format("Y-m-d H:i:s"); 

    $end_datetime = $end_date; 
    $end_datetime .= ":"; 
    $end_datetime .= $end_time; 
    $true_end_time = date_create_from_format("d.m.Y:H.i",$end_datetime); 
    $db_end_time = $true_end_time->format("Y-m-d H:i:s"); 

    include ('config.php'); 

     try { 
     $cnnxn = new PDO("mysql:host=$db_host;dbname=$db_name", $db_username, $db_password); 
    } catch (PDOException $e) { 
     die("ERROR: " . $e->getMessage()); 
    } 
    $cnnxn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $cnnxn->exec("SET NAMES utf8"); 
    $query = $cnnxn->prepare("INSERT INTO assignments (teacher, start, end, exam, question_text, criteria, criteria_visibility, question_title, subject, pin, editable, max_score) VALUES (:teacher, :start, :end, :exam, :question_text, :criteria, :criteria_visibility, :question_title, :subject, :pin, :editable, :max_score)"); 
    $query->bindParam(':teacher', $userid); 
    $query->bindParam(':start', $db_start_time); 
    $query->bindParam(':end', $db_end_time); 
    $query->bindParam(':exam', $exam_mode); 
    $query->bindParam('::question_text', $qtext); 
    $query->bindParam(':criteria', $crita); 
    $query->bindParam(':criteria_visibility', $critsel); 
    $query->bindParam(':question_title', $qtitle); 
    $query->bindParam(':subject', $subject); 
    $query->bindParam(':pin', $pinnumber); 
    $query->bindParam(':editable', $edit); 
    $query->bindParam(':max_score', $max_score); 
    $query->execute(); 

    if ($query !== false) 
       { 
        print "<div class=\"message\">Success!</div>"; 
       } 
    $cnnxn = null; 
    } 

(我知道日期部分是醜陋的,我的頭直到一小時後才能正常工作,因此發生PDOException錯誤,我的頭撞到了牆上。)

93行是腳本執行查詢的位置。

任何想法?

+2

確定'$查詢 - > bindParam( ':: QUESTION_TEXT',$ QTEXT);'是正確:)? – Matt

+0

嘗試'$ query-> bindParam(':question_text',$ qtext);' – Matt

+1

*鷹眼@Matt!*'$ query-> bindParam(':: question_text',$ qtext);'是一個錯字。 –

回答

1

僅作參考,它是一個錯字

$query->bindParam('::question_text', $qtext); 

本來應該

$query->bindParam(':question_text', $qtext); 
相關問題