绑定参数名称

问题描述 投票:0回答:0

Doctrine中,是否可以绑定一个参数的name (与绑定参数的value相反)?

为什么我需要它

有一个表有 7 个boolean 列,一个代表一周中的每一天:mondaytuesday 等(这些对应于 GTFS 定义的 calendar 实体的结构,https://gtfs.org /schedule/reference/#calendartxt).

给定一周中的某一天(比如,monday),我想获取周一可用的所有行,即:

$statement = $this
    ->getEntityManager()
    ->getConnection()
    ->prepare('
        SELECT id
        FROM calendar
        WHERE monday = 1
    ');

一般来说,我希望能够在该查询中提供一天的名称,我可以通过以下方式简单地做到这一点:

->prepare("
    SELECT id
    FROM calendar
    WHERE $dayName = 1
");

我想知道是否可以对参数名称使用参数绑定,例如

$statement = $this
    ->getEntityManager()
    ->getConnection()
    ->prepare('
        SELECT id
        FROM calendar
        WHERE :dayName = 1
    ');

$statement->bindValue('dayName', $dayName);

这不起作用,见下文。

我试过的

#1

WHERE :dayName = 1

转换为以下 SQL 查询:

SELECT calendar.id
FROM calendar
WHERE 'monday' = 1

并且,因为该条件永远不会为真,所以返回一个空集,[].

#2

WHERE `:dayName` = 1
SELECT calendar.id
FROM calendar
WHERE `'monday'` = 1

Column not found: 1054 Unknown column ''monday'' in 'where clause'

#3

WHERE ":dayName" = 1
# no query

Invalid parameter number: number of bound variables does not match number of tokens

php mariadb doctrine
© www.soinside.com 2019 - 2024. All rights reserved.