目次に値を挿入しようとしています。 VALUES に PHP 変数がない場合は正常に動作します。ただし、変数 $type を VALUES に入れると、機能しません。私が何を間違えたのでしょうか?
$type
VALUES
SQL インジェクションを回避するには、挿入ステートメントは次のようになります:
MySQL ステートメントに PHP 変数を追加するためのルールはシンプルで簡単です:
このルールはクエリの 99% に適用され、クエリにも適用されます。 SQL データ リテラル (または単純に SQL 文字列または数値) を表す変数は、準備されたステートメントを介して追加する必要があります。例外なく。
この方法は 4 つの基本的なステップで構成されます:
データリテラルを追加
リーリー
Mysqli を使用して INSERT クエリを実行する方法 と、プロセスを大幅に簡素化できるソリューションを参照してください。 。
を取得するために get_result() メソッドも呼び出す必要があります。 mysqli_result から、通常の方法でデータを抽出できます: リーリー
get_result()
から、通常の方法でデータを抽出できます:
ホワイトリスト を通じてフィルター処理する必要があります。
明示的に と照合する必要があります。これについては、私の他の記事ユーザーの選択に基づいて ORDER BY 句にフィールド名を追加する:で詳しく説明しています。
リーリー リーリー
$direction 変数と $orderby 変数は、許可されたバリアントの 1 つと等しいか、または次のいずれかになるため、SQL クエリに安全に挿入できます。 throw エラーが発生しました。
変数と
変数は、許可されたバリアントの 1 つと等しいか、または次のいずれかになるため、SQL クエリに安全に挿入できます。 throw エラーが発生しました。
backtick 文字で囲む必要があります。したがって、ORDER BY 例の最終的なクエリ文字列は次のようになります。 リーリー
文字で囲む必要があります。したがって、ORDER BY 例の最終的なクエリ文字列は次のようになります。 リーリー
SQL インジェクションを回避するには、挿入ステートメントは次のようになります:
リーリーMySQL ステートメントに PHP 変数を追加するためのルールはシンプルで簡単です:
1.準備されたステートメントを使用する
このルールはクエリの 99% に適用され、クエリにも適用されます。 SQL データ リテラル (または単純に SQL 文字列または数値) を表す変数は、準備されたステートメントを介して追加する必要があります。例外なく。
この方法は 4 つの基本的なステップで構成されます:
mysqli
現在の PHP バージョンでは、1 回の呼び出しで準備/バインド/実行が可能です:データリテラルを追加
リーリー
古いバージョンの PHP を使用している場合は、明示的に準備/バインド/実行を行う必要があります:リーリー
このコードは少し複雑ですが、これらすべての演算子の詳細な説明は、私の記事Mysqli を使用して INSERT クエリを実行する方法 と、プロセスを大幅に簡素化できるソリューションを参照してください。 。
SELECT クエリの場合は、上記と同じ方法を使用できます:リーリー
ただし、古いバージョンの PHP を使用している場合は、準備/バインド/実行ルーチンを実行し、使い慣れたを取得するために
PDO を使用してデータ リテラルを追加するget_result()
メソッドも呼び出す必要があります。 mysqli_resultから、通常の方法でデータを抽出できます:
リーリーリーリー
PDO では、バインディング部分と実行部分を一緒にマージすることができ、非常に便利です。 PDO は名前付きプレースホルダーもサポートしており、これが非常に便利だと考える人もいます。ホワイトリスト を通じてフィルター処理する必要があります。
キーワードや識別子 (データベース、テーブル、フィールド名) など、クエリの別の部分を表す変数を追加する必要がある場合があります。これはまれな状況ですが、備えておくことが最善です。明示的に と照合する必要があります。これについては、私の他の記事ユーザーの選択に基づいて ORDER BY 句にフィールド名を追加する:で詳しく説明しています。
これは例です:リーリー リーリー
このようなコードの後、$direction
最後に言及すべきことは、識別子も特定のデータベース構文に従ってフォーマットする必要があるということです。 MySQL の場合、識別子は変数と
$orderby変数は、許可されたバリアントの 1 つと等しいか、または次のいずれかになるため、SQL クエリに安全に挿入できます。 throw エラーが発生しました。
backtick
文字で囲む必要があります。したがって、ORDER BY 例の最終的なクエリ文字列は次のようになります。 リーリー