未定义的索引 - 表单不通过 javascript 将值发送到 php 代码
undefined index - form not sending value through to php code via javascript
尝试在数据库中添加新记录时收到以下错误消息:
注意:未定义索引:course_title in /Applications/XAMPP/xamppfiles/htdocs/insights/ManageCourses_AddSubmit.php on line 13
无效的
消息:SQLSTATE[23000]:违反完整性约束:1048 列 'course_title' 不能为空
我有类似的查询,可以更新和删除 table 中的记录,它们工作正常,所以我不确定为什么会出现问题。
它对 course_title 说 NULL 但是在 javascript 中我序列化了表单信息所以我不确定为什么它不发送它。
course_details table 有一个自动递增字段,在添加记录时会自动更新。
任何人都可以阐明可能是什么问题吗?
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">×</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);
?>
我注意到当我在 (:course_title
) 周围使用反引号时,它会很好地添加记录,但是增加的值是:course_title
非常感谢
我认为这是一个命名错误。
在您的表单中,您有这个输入字段:
<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
。
我建议您尝试清理所有使用的名称。如果 table 字段名为 course_title
,则将此名称用于表单和 PHP 控制器。
或者,一种更优雅的方法,尝试将所有名称外包到一些 XML 配置文件中,这样您的控制器总是根据配置文件执行相同的工作:-)
尝试在数据库中添加新记录时收到以下错误消息:
注意:未定义索引:course_title in /Applications/XAMPP/xamppfiles/htdocs/insights/ManageCourses_AddSubmit.php on line 13 无效的 消息:SQLSTATE[23000]:违反完整性约束:1048 列 'course_title' 不能为空
我有类似的查询,可以更新和删除 table 中的记录,它们工作正常,所以我不确定为什么会出现问题。
它对 course_title 说 NULL 但是在 javascript 中我序列化了表单信息所以我不确定为什么它不发送它。
course_details table 有一个自动递增字段,在添加记录时会自动更新。
任何人都可以阐明可能是什么问题吗?
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">×</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);
?>
我注意到当我在 (:course_title
) 周围使用反引号时,它会很好地添加记录,但是增加的值是:course_title
非常感谢
我认为这是一个命名错误。
在您的表单中,您有这个输入字段:
<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
。
我建议您尝试清理所有使用的名称。如果 table 字段名为 course_title
,则将此名称用于表单和 PHP 控制器。
或者,一种更优雅的方法,尝试将所有名称外包到一些 XML 配置文件中,这样您的控制器总是根据配置文件执行相同的工作:-)