【发布时间】:2013-12-04 18:18:04
【问题描述】:
我有一个由 jquery 函数触发的动态下拉菜单。我正在显示来自 mysql db 的下拉值。之后,我尝试从下拉菜单中插入选定的值。我已经能够通过mysqli_ 成功地做到这一点,但是在使用PDO 时没有插入任何内容。我仔细检查了变量,没有显示错误。如何使用PDO 从下拉菜单中插入选定的值? Example
用于创建多个下拉菜单的 Jquery
<script>
$(document).ready(function () {
$('select').change(function() {
var option = $(this).val();
showFields(option);
return false;
});
function showFields(option){
var content = '';
for (var i = 1; i <= option; i++){
content += '<div id="course_'+i+'"><label>Course # '+i+'</label><br /><label>Course Name:</label> <select id="coursename_'+i+'" name="coursename_'+i+'"><option value="">--- Select ---</option>"'
<?php
$course_query = $db_con->prepare("SELECT course_id, course_name FROM courses_selection_list ");
$course_query->execute();
$data = $course_query->fetchAll();
foreach ($data as $row){
//dropdown values pulled from database
echo 'content += \'<option value="' . $row['course_id'] . ':'.$row['course_name'].'">' . $row['course_name'] . '</option>\';';
}
?>
'"';
content += '</select></br>Class Start Date: <input type="text" id="start_date_'+i+'" name="start_date_'+i+'" class="datepicker" />Class End Date: <input type="text" id="end_date_'+i+'" name="end_date_'+i+'" class="datepicker" /><div>';
}
$('#course_catalog').html(content);
}
});
</script>
PDO 插入(不起作用)
<?php
if(isset($_POST['submit'])){
$courses_offered=$_POST['courses_offered'];
$db_con = new PDO($dsn, $user, $password);
for($i=1;$i<=$courses_offered;$i++){
$course_vals = explode(':',$_POST["coursename_".$i]);
$acad_id = $_POST['acad_id'];
$start_date = $_POST["start_date_".$i];
$end_date = $_POST["end_date_".$i];
$query_init3 = "INSERT INTO courses_by_academy (academy_id, course_id, course_name, start_date, end_date) VALUES (:acad_id, :course_vals[0],:course_vals[1],:start_date,:end_date);";
$query_prep3 = $db_con->prepare($query_init3);
$insert_result3 = $query_prep3->execute(array(
"acad_id" => $acad_id,
"course_vals[0]" => $course_vals[0],
"course_vals[1]" => $course_vals[1],
"start_date " => $start_date,
"end_date " => $end_date
));
}
print_r($_POST);
}
?>
Mysqli 插入(工作)
<?php
if(isset($_POST['submit'])){
$courses_offered=$_POST['courses_offered'];
$db_con = new mysqli(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
for($i=1;$i<=$courses_offered;$i++)
{
$courseVals=explode(':',$_POST["coursename_".$i]);
$acad_id = $_POST['acad_id'];
$start_date = $_POST["start_date_".$i];
$end_date = $_POST["end_date_".$i];
$db_insert4= $db_con->prepare("INSERT INTO courses_by_academy (academy_id, course_id, course_name, start_date, end_date) VALUES (?,?,?,?,?)");
$db_insert4->bind_param('issss', $_POST['acad_id'], $courseVals[0], $courseVals[1], $start_date, $end_date);
$db_insert4->execute();
}
print_r($_POST);
echo $courseVals;
}
?>
HTML
Courses being offered?
<select name="courses_offered">
<option value="default">---Select---</option>
<option value="1">1</option>
</select>
<div id="course_catalog"></div>
<input value="SAVE" name="submit" type="submit">
【问题讨论】:
-
在执行之前不需要将值绑定到查询吗?
-
对 PDO 有点陌生,请尝试将占位符从 :course_vals[0],:course_vals[1] 更改为 :course_vals_one, :course_vals_two。