0

私は動的ページに取り組んでいます。シナリオはこのようになります。

  • ページ 1 は、選択するドロップダウン メニューで構成されています。
  • 選択したメニューの値は、次のページの URL に渡されます。
  • 次に、この値がページによって取得され、MYSQL テーブル フィールド名を比較およびフィルタリングします。
  • この表は、ユーザーがページ 1 で選択できるオプションである 4 つの主要なカテゴリで構成されています。
  • カテゴリごとに 30 語が保存されます。
  • ユーザーが特定の単語を検索するとき、ドロップダウンを表示し、この値がテーブルのフィールド ID の値と同じかどうかを確認することでオプションを要求することになっています。単語は現在、 4 つのカテゴリすべてではなく、このフィールドで検索します。

これを行う方法?私はこれに数週間取り組んでいましたが、解決できません。

$ret1 = "SELECT * FROM $db_tb_name WHERE MATCH
 ('categoryid'='.$selectvalueid.') AND AGAINST ('%$str%' IN BOOLEAN MODE)";

私はこのコードを持っていますが、構文が間違っています。

誰かがいくつかの例で私を助けてください。

4

1 に答える 1

0

簡単に言うと、リクエストを発行するときに、カテゴリID $selectvalueid(ドロップダウンの結果)と検索語$str(フリーテキストエントリの結果?)の両方があります。またcategoryid、テーブルの列がスクリプトの文字列と完全に一致$selectvalueidし、他の列(名前は?)に値が含まれている行が必要です。$strこれまでのところ正しいですか?

そうである場合、クエリは次のようになります。

SELECT * FROM $db_tb_name
WHERE categoryid = '$selectvalueid'
  AND wordcolumn LIKE '%$str%'

ユーザー入力変数をSQLクエリに貼り付けるだけで、サイトがSQLインジェクション攻撃に対して脆弱になる可能性が高いことに注意してください。したがって、より良い方法は、プレースホルダーを使用してクエリを使用し、クエリを実行するときに安全な方法でそれらのプレースホルダーを入力するためにプリペアドステートメントを使用することです。その方法は、アプリケーションの言語によって異なります。

于 2012-11-01T14:38:37.647 に答える