整数パラメータを使用することが重要であることがわかったのは、LIMIT
にある場合だけです。 条項。
SELECT
...
LIMIT ?, ?
MySQLは、このコンテキストでは引用符で囲まれた文字列リテラルを受け入れず、文字列型のパラメータを受け入れません。整数を使用する必要があります。
パラメータ化されたPDOクエリと`LIMIT`句-機能していません これに関する私のテストのために。これはPDOに関する質問であり、mysqliはテストしませんでしたが、この場合、整数パラメーターを使用することはサーバー側のMySQL要件であると思います。したがって、mysqliにも適用する必要があります。
他のすべての場合(AFAIK)、MySQLは文字列の先頭の数字を読み取り、後続の文字を無視することで文字列を整数に変換できます。
以下のコメントの@Dharmanは、ORDER BY
での整数のMySQLのサポートに言及しています。 :
SELECT
...
ORDER BY ?
ORDER BY
の整数 数値の定数値ではなく、その位置の列で並べ替えることを意味します:
SELECT
...
ORDER BY 1 -- sorts by the 1st column
ただし、その数値を含む同等の文字列値は同じようには機能しません。文字列の定数値で並べ替えます。つまり、すべての行が関連付けられており、並べ替え順序は任意です。
SELECT
...
ORDER BY '1' -- sorts by a constant value, so all rows are tied
したがって、これはクエリパラメータのデータ型が重要なもう1つのケースです。
一方、序数を使用して、ORDER BY
のその位置にある列で並べ替えます またはGROUP BY
は非推奨であり、SQLの使用に依存するべきではありません。