2015-03-03 49 views
0

發送值到PHP代碼試圖在數據庫中添加一個新的記錄時收到以下錯誤信息:未定義指數 - 形成不是通過通過javascript

公告:未定義的索引:在COURSE_TITLE /應用/ XAMPP/xamppfiles/htdocs中/見解/ ManageCourses_AddSubmit.php上線13 NULL 消息:SQLSTATE [23000]:完整性約束違規:1048列「COURSE_TITLE」不能爲空

在表中我也有類似的疑問,其更新和刪除記錄,他們工作正常,所以我不知道爲什麼這有問題。

它說course_title爲NULL,但在JavaScript中我串行化表單信息,所以我不知道爲什麼它不發送它。

course_details表有一個自動增量字段,當添加記錄時它會自動更新。

任何人都可以照亮一下可能是什麼問題嗎?

的JavaScript負責處理被點擊時提交會發生什麼:

function addCall() { 
    var data = $('#addForm').serialize(); 
    $.post('ManageCourses_AddSubmit.php', data, function(response){ 

    $("#addForm").html(response); 
    }).fail(function(jqXHR, textStatus) { 
    alert("Request failed: " + textStatus); 
    }); 
} 

的模式,其中的形式是被提交:

<div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="addModalLabel" aria-hidden="true"> 
          <div class="modal-dialog"> 
           <div class="modal-content"> 
            <div class="modal-header"> 
             <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
             <h4 class="modal-title">Add New Record: </h4> 
            </div> 
            <div class="modal-body"> 
             <form id="addForm" class="addForm"> 
              <div class="form-group"> 
               <label for="course_code" class="pull-left" class="control-label">Course Code:</label> 
               <input type="text" class="form-control" id="ourse_code_id" name="code[]" readonly value ="NULL"> 
              </div> 
              <div class="form-group"> 
               <label for="course_name" class="pull-left" class="control-label">Course Title:</label> 
               <input type="text" class="form-control" placeholder="Enter Course Title" id="course_name_id" name="title[]"> 
              </div> 
             </form> 
            </div> 
            <div class="modal-footer"> 
             <div class="btn-toolbar"> 
              <button type="button" class="btn btn-primary" id="add_row" name="add_row">Add New Record <span class="glyphicon glyphicon-plus"></button> 
              <button type="button" class="btn btn-default" class="pull-right" data-dismiss="modal">Close</button> 
              <button type="button" class="btn btn-success" class="pull-right" onclick="addCall();">Submit <span class="glyphicon glyphicon-saved"></button> 
             </div> 
            </div> 
           </div> 
          </div> 
         </div> 

終於php文件:

<?php 

include "db_conx.php"; 

    try 
    { 
     $db_conx = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password); 

     $db_conx->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

     $sql = $db_conx->prepare("INSERT INTO `insights`.`course_details` (`course_code`, `course_title`) VALUES (:course_code, :course_title)"); 

     $course_title = $_POST['course_title']; 
     $course_code = $_POST['course_code']; 

     echo var_dump($course_title)."<br>"; 
     echo var_dump($course_code)."<br>"; 

     $sql->bindParam(':course_title', $course_title, PDO::PARAM_STR); 
     $sql->bindParam(':course_code', $course_code, PDO::PARAM_STR); 


     /*** execute the prepared statement ***/ 
     $sql->execute(); 

     /*** success message ***/ 


     $message = "<p class='text-success'> Record Successfully Added <span class='glyphicon glyphicon-ok'/></p>"; 
    } 
    catch(Exception $e) 
    { 
     $message = 'Message: ' .$e->getMessage(); 
    } 


die($message); 
?> 

我注意到當我使用back ticks(:course_title)時,它添加了很好的紀錄[R附加值是:COURSE_TITLE

非常感謝

+0

,因爲它說「列COURSE_TITLE「基於配置文件相同的工作不能null「,所以或者允許'course_title'也是'NULL',或者更新你的代碼來不將標題設置爲'NULL' ... – Legionar 2015-03-03 12:03:47

+0

我將course_code設置爲null,因爲那是一個自動遞增數字。如果我將course_title設置爲null,那麼當用戶嘗試提交無效信息時會出現問題:/您指的是哪個代碼? – user90210 2015-03-03 12:07:03

回答

1

我認爲這是一個錯誤的命名。

在你的表格,你有這樣的輸入域:

<label for="course_name" class="pull-left" class="control-label">Course Title:</label> 
<input type="text" class="form-control" placeholder="Enter Course Title" id="course_name_id" name="title[]"> 

還有你怎麼稱呼它course_name_id。 然後在你的PHP腳本,你設法讓這些變量:

$course_title = $_POST['course_title']; 
$course_code = $_POST['course_code']; 

還有你怎麼稱呼它course_title

我建議你儘量清理所有使用的名稱。如果表格字段的名稱爲course_title,則將該名稱用於表格和PHP控制器。

或者,更優雅的方式,嘗試將所有的名字外包到一些XML配置文件,所以您的控制器總是這樣:-)

+0

謝謝你指出。當我試圖做別的事情時,一定錯過了它! – user90210 2015-03-03 12:19:29

+0

很高興幫助。祝你好運 – 2015-03-03 12:34:08