Ваша проблема именно в том, что говорится в сообщении об ошибке, вы используете позиционные параметры (?
) и именованные параметры (:year
) в одном запросе, что недопустимо.Вы должны последовательно использовать один или другой, например,
$name = $_GET['name'];
$stmt = $pdo->prepare("SELECT `st_id`, `st_name` FROM `students` WHERE st_name LIKE ? or st_phone LIKE ? AND atd_year = ?");
$param = array("%$name%", "%$name%", $_GET['yid']);
$stmt-> execute($param);
или использовать именованные параметры:
$name = $_GET['name'];
$stmt = $pdo->prepare("SELECT `st_id`, `st_name` FROM `students` WHERE st_name LIKE :name or st_phone LIKE :phone AND atd_year = :year");
$param = array(':name' => "%$name%", ':phone' => "%$name%", ':year' => $_GET['yid']);
$stmt-> execute($param);