为什么在通过执行传递参数时清空结果?

时间:2015-09-16 00:33:48

标签: php mysql pdo execute

我希望从查询中移动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

相关链接和帖子:

1 个答案:

答案 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(); 
       }