PDO位置和命名参数作为同一个准备查询的一部分?

Tra*_*vis 11 php mysql pdo prepared-statement

我正在学习PDO的绳索.

这是我的sql(WHERE中可以出现的参数数量是变量).

    SELECT
        ID, title

    FROM
        table

    WHERE
        something = ?

    ORDER BY 
        :sort :dir 

    LIMIT 
        :start, :results
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

        $query = $conn->prepare($sql);

        if ($parameters) {

            $i = 0;
            foreach ($parameters AS $parameter) {

                $i++;
                $query->bindParam($i, $parameter);

            }

        }

        $query->bindParam(':start', $pagination['start'], PDO::PARAM_INT);
        $query->bindParam(':results', $pagination['results'], PDO::PARAM_INT);
        $query->bindParam(':sort', $pagination['sort']);
        $query->bindParam(':dir', $pagination['dir']);

        $query->execute();
Run Code Online (Sandbox Code Playgroud)

......以下是它生成的例外情况:

 Invalid parameter number: mixed named and positional parameters
Run Code Online (Sandbox Code Playgroud)

是否无法在同一查询中组合位置参数和命名参数?或者我错过了什么?

谢谢!

Nak*_*lda 10

是的,这是不可能的.

PDO.prepare

您不能在同一SQL语句中同时使用命名和问号参数标记; 选择一个或另一个参数样式.

  • 好的,谢谢你的信息。考虑到我有可变数量的参数,那么不可能将变量绑定到ORDER BY和LIMIT子句吗?(据我了解,您只能使用命名参数来执行此操作。但是命名参数不会将其自身带给参数数量未知的情况。) (2认同)