sql >> データベース >  >> RDS >> Mysql

mysqli_stmt ::bind_param()-各パラメーターにs以外の別のデータ型を指定します

    整数パラメータを使用することが重要であることがわかったのは、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の使用に依存するべきではありません。



    1. MySQLは日付に日を追加します

    2. Django dumpdataを使用して、全体的なデータのサブセットをダンプしますか?

    3. OBJECTPROPERTY()を使用して、オブジェクトがSQLServerのユーザー定義テーブルであるかどうかを確認します。

    4. VMwareCloudインフラストラクチャ上のScaleGridPostgreSQL