Почему пустой результат при передаче аргумента через execute?

Я ожидал переезда WHERE строка значения аргумента из запроса к execute() было бы простой настройкой, но это не удалось. Я прочитал соответствующую документацию и не могу понять, почему я получаю пустой результат в последнем случае. Как я могу передать school_year в методе execute?

Возвращает ожидаемые результаты:

$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

Решение

Я думаю, что 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();
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector