Reputation: 11438
I expected moving WHERE
argument value string from the query to execute()
would be a simple adjustment but it fails. I've read related documentation and cannot understand why I'm getting an empty result in the latter case. How can I pass the school_year
in the execute method?
Returns expected results:
$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();
Returns empty:
$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'
));
Datatype of field:
school_year varchar(10) utf8_general_ci
Related links and posts:
Upvotes: 0
Views: 73
Reputation: 5041
I think the parm is failing to bind because its data type is taken from php. Basically MySQL is looking for one data type (date?) and PHP says that the parm is of a different type (string).
Try
$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();
}
Upvotes: 1