当我尝试执行以下查询时,我收到以下警告。
错误
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);
这可能是导致问题的原因?任何帮助将不胜感激。谢谢。
答案 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);