PDO FetchAll返回一个空数组,但数据库中有值
PDO FetchAll returns an empty array but there is value in db
我有一个带有多选的下拉框。下拉列表如下:
<select multiple class="form-control" name="batch_no[]" id="batch_no" required onchange="getBatchCourseDetail();">
<option value="">-----------Select Your Batch----------</option>
<?php
foreach ($result as $res)
{
?>
<option value="<?php echo $res['batch_code']; ?>"><?php echo $res['batch_code']; ?></option>
<?php
} ?>
</select>
在onchange函数调用中,我有这样的脚本:
function getBatchCourseDetail()
{
var other = String($('#batch_no').val());
var opts = [],
opt;
var split1 = other.split(',');
for (var i = 0; i < split1.length; i++)
{
opt = split1[i];
opts.push(opt);
}
$.ajax({
url: 'course_apply_batch_course_detail_ajax.php',
type: 'POST',
data:
{
batch_code: opts
},
success: function (data)
{
//console.log(data);
$('#batch_information_autofill').html(data);
}
});
}
在course_apply_course_detail_ajax.php页面中的ajax文件中,我检索下拉列表的所有值。
course_apply_course_detail_ajax.php:
<?php
require('classes/autoloader.php');
$course_apply = new 'Model'CourseApplyModel();
$batch_code111=array();
$batch_code111 = $_POST['batch_code'];
$batch_code1 ="'" .implode("','",$batch_code111) ."'";
$parameter = array(
"batchcode" => $batch_code1,
"status" => 0);
$result11 =$course_apply->getBatchCourseDetail11($parameter);
echo"<pre>";
print_r($result11);
echo"</pre>";
exit;
?>
我将获得$batch_code1值,它们分别为:"LATS-CHMB-1000"、"LATS-SA-1000"answers"LATS-ABSE-1003",存储在数组变量"batchcode"中。
在模型中,我的查询如下:
public function getBatchCourseDetail11($parameter)
{
/* $QUERY1="SELECT start_date,end_date,course_code FROM batch WHERE
batch_code IN('LATS-CHMB-1000','LATS-SA-1000','LATS-ABSE-1003') AND status =0"; */
$query1="SELECT start_date,end_date,course_code FROM batch WHERE status =:status AND batch_code IN(:batchcode)";
try{
$result1=$this->dbh->prepare($query1);
$result1->execute($parameter);
$data11=$result1->fetchAll('PDO::FETCH_ASSOC);
return $data11;
}
catch('PDOException $e)
{
print_r($e);
return false;
}
}
当我尝试打印返回数据时,我得到了array(),但查询在phpmyadmin中执行正确。
提前谢谢,请帮我解决这个问题。
查询是您的问题
$query1="SELECT start_date,end_date,course_code
FROM batch
WHERE status =:status
AND batch_code IN(:batchcode)";
不可能用占位符替换任意查询部分。因此,对于像IN()这样以逗号分隔的占位符,您必须创建一组?'s,并将其放入查询中:
简而言之,如果您在IN()
列表中有3个想要的值,那么我们必须创建类似IN(?,?,?)
的语法,然后将这3个参数传递给prepare。
public function getBatchCourseDetail11($parameter)
{
// generate the number of ? we need
$ins = str_repeat('?,', count($parameter['batchcode']) - 1) . '?';
$query1="SELECT start_date,end_date,course_code
FROM batch
WHERE status = ?
AND batch_code IN($ins)";
try{
$result1=$this->dbh->prepare($query1);
$params[] = $parameter['status'];
foreach ( $parameter['batchcode'] as $p ) {
$params[] = $p;
}
$result1->execute($params);
$data11=$result1->fetchAll('PDO::FETCH_ASSOC);
return $data11;
}
catch('PDOException $e) {
print_r($e);
return false;
}
}
相关文章:
- 在不使用循环的情况下,从一个数据库字符串值向javascript数组添加多个对象
- 如何使用JQuery将值数组插入到数据库中
- 在不重构Mongo数据库的情况下,更新嵌入数组中的具有给定ID的对象
- 获取从数据库到json_encode的数组
- 在Ember中显示使用数据库中的JSON的数组
- 无法从从sql数据库读取的javascript函数中获取返回数组
- 将 php 数据库结果传递给 javascript 数组
- 如何将javascript yml字符串移动到数据库to ruby数组
- 通过node-js脚本将文档数组插入mongodb中的数据库时出现问题
- PHP 数组未向数据库插入多行
- 如何通过php从数据库创建javascript数组
- 如何将复选框数组中的数据保存到数据库中
- 将数组的顺序插入到数据库中
- 用于获取数组中的数据库值的 php 脚本,以便在下拉列表中查看
- 蒙戈数据库.查询子文档中的数组
- 如何通过Firebase数据库中的AngularJS在点击时获取数组元素的唯一ID
- Js 数组检测:从 php 数组中找到的值数(从数据库中抓取)
- 来自数据库数组的简单 Javascript 幻灯片
- 将 mySQL 数据库信息放入 JavaScript 数组中
- 使用 ajax 使用 jquery 数组更新 mysql 数据库