$sql3 = 'SELECT sched_id, date_format(sched_date_time,\'%H:%i\') AS \'Time\'
FROM schedule
WHERE (date_format(sched_date_time,\'%Y-%m-%d\') = \':date\') AND
schedule.film_id = :film_id';
$sth2 = $pdo->prepare($sql3);
$sth2->bindValue(':date', '2021-12-18');
// date_format($date,"%Y-%m-%d")
$sth2->bindValue(':film_id', $row1['film_id']);
$sth2->execute();我收到以下错误
“无效参数号:绑定变量数与令牌数目不匹配”
我相信这是由SQL函数$sql3中变量date_format()中的冒号引起的。
如何摆脱冒号,使我可以保留它的格式,而不让PDO认为它是一个占位符的声明?
我必须在冒号之前使用\\来按照其他问题的答案来转义它,但是我继续得到错误。
我正在使用XAMPP作为一个可移植/临时开发环境。XAMPP使用MariaDB作为其数据库。
发布于 2021-12-16 21:57:41
为了避免转义引号的需要,请在双引号中定义SQL语句:
$sql3 = "SELECT sched_id, date_format(sched_date_time,'%H:%i') AS 'Time'
FROM schedule
WHERE (date_format(sched_date_time,'%Y-%m-%d') = :date)
AND schedule.film_id = :film_id";
$sth2 = $pdo->prepare($sql3);
$sth2->bindValue(':date','2021-12-18', PDO::PARAM_STR);
// date_format($date,"%Y-%m-%d")
$sth2->bindValue(':film_id',$row1['film_id'], PDO::PARAM_INT);
$sth2->execute();根据bindValue文档,您还可以显式地设置值的类型。
https://stackoverflow.com/questions/70386076
复制相似问题