ホームページ >バックエンド開発 >PHPチュートリアル >初心者がファジークエリによるSQLインジェクションを防ぐ方法を尋ねる
//テーブルモデルを作成
$news_table=new news();
//対応するアダプターを作成
$db=$news_table->getAdapter();
//SQL文を準備
$sql=$db-> ;quoteInto ("select title,pubDate from news where title like '%$keyword_arr[0]%'");
//結果セットを取得します
$res=$db->query($sql)->fetchAll( ) ;
意図的に % 記号を含むファジー クエリが必要で、変数名 $ 記号と配列添字演算子 [] 記号も含まれていますが、他の人が % などを使用して SQL を挿入することも防ぎたいです。文を書けばいいですか? ?
mysql_real_escape_string(); を追加します
ただし、mysql_real_escape_string は % と _ をエスケープしないため、最初に str_replace() を実行して不要なシンボルを削除できます。
この SQL 文を書くのを手伝ってもらえますか?
私は初心者です
PHP 警告: 引数 2 がありませんZend_Db_Adapter_Abstract::quoteInto() の場合、
44 行目の E:myenvApachehtdocsnewsapplicationcontrollersNewsqueryController.php で呼び出され、927 行目の E:myenvApachehtdocsnewslibraryZendDbAdapterAbstract.php で定義されています
PHP 注意: 未定義の変数:
E の値:myenvApachehtdocsnewslibraryZendDbAdapterAbstract.php
930 行目
問題がどこにあるのかわかりません
2. PHP 通知: 未定義変数: value
$ value は Abstract.php 行 930 で定義されていません
私も知りたいのですが、パラメーターをフィルターし、フィルター対象の文字が見つかった場合は強制終了するか置換する必要があります。
mysql_real_escape_string
と
mysql_escape_string
の違いは何ですか? ?
quoteInto メソッドには 2 つのパラメータが必要です
#7
後者は含まれていますシリーズ