我希望从查询中移动WHERE
参数值字符串到execute()
将是一个简单的调整,但它失败了。我已阅读相关文档,无法理解为什么我在后一种情况下得到空结果。如何在执行方法中传递school_year
?
返回预期结果:
$query = "SELECT faculty_id, school_year, term, department_name, course_name, section_id
FROM all_school_classfeedback
WHERE school_year = '2012-2013'";
if ($stmt = self::$dbCon->prepare($query))
{
$stmt->execute();
返回空:
$query = "SELECT faculty_id, school_year, term, department_name, course_name, section_id
FROM all_school_classfeedback
WHERE school_year = :school_year";
if ($stmt = self::$dbCon->prepare($query))
{
$stmt->execute(array(
':school_year' => '2012-2013'
));
字段的数据类型:
school_year varchar(10) utf8_general_ci
相关链接和帖子:
答案 0 :(得分:1)
我认为parm无法绑定,因为它的数据类型来自php。基本上MySQL正在寻找一种数据类型(日期?),PHP说parm是不同类型的(字符串)。
尝试
$year = '2012-2013';
$query = "SELECT faculty_id, school_year, term, department_name, course_name, section_id
FROM all_school_classfeedback
WHERE school_year = :school_year";
if ($stmt = self::$dbCon->prepare($query))
{
$stmt->bindParam(':school_year', $year, PDO::PARAM_STR);
$stmt->execute();
}