首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PDO准备语句中转义冒号(:)

问在PDO准备语句中转义冒号(:)
EN

Stack Overflow用户
提问于 2021-12-16 21:54:08
回答 1查看 213关注 0票数 2
代码语言:javascript
复制
$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作为其数据库。

EN

回答 1

Stack Overflow用户

发布于 2021-12-16 21:57:41

为了避免转义引号的需要,请在双引号中定义SQL语句:

代码语言:javascript
复制
$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文档,您还可以显式地设置值的类型。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70386076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档