PHP PDO无效的参数编号:命名和位置参数混合

时间:2019-02-27 05:36:04

标签: php mysql pdo

当我尝试执行以下查询时,我收到以下警告。

错误

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters in E:\xampp\htdocs\msdca\attendance.php on line 142

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number in E:\xampp\htdocs\msdca\attendance.php on line 142

查询

$name = $_GET['name'];
$stmt = $pdo->prepare("SELECT `st_id`, `st_name` FROM `students` WHERE st_name LIKE ? or st_phone LIKE ? AND atd_year = :year");
$param = array("%$name%", "%$name%");
$stmt-> bindValue(':year', $_GET['yid']);
$stmt-> execute($param);

这可能是导致问题的原因?任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

您的问题正是错误消息所说的,您在同一查询中使用位置参数(android:textColorHint="#000000")和命名参数(?),这是不允许的。您需要持续使用其中一个,例如

: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);