$search_query = "select SQL_CALC_FOUND_ROWS * from king";
$usersearch= mysql_real_escape_string($_GET['usersearch']);
$clean_search = str_replace('、', ' ',$clean_search);
$clean_search = str_replace(' ', ' ',$usersearch);
$search_words = explode(' ', $clean_search);
$final_search_words = array();
if (count($search_words) > 0) {
foreach ($search_words as $word) {
if (!empty($word)) {
$final_search_words[] = $word;
}
}
}
// Generate a WHERE clause using all of the search keywords
$where_list = array();
if (count($final_search_words) > 0) {
foreach($final_search_words as $word) {
$where_list[] = "syou LIKE '%$word%'";
}
}
$where_clause = implode(' AND ', $where_list);
// Add the keyword WHERE clause to the search query
if (!empty($where_clause)) {
$search_query .= " WHERE $where_clause";
}
$pid = intval($_GET['pid']);
if ($pid < 1) $pid = 1;
$limit_start_rows = ( $pid - 1 ) * 10;
$search_query .= " LIMIT {$limit_start_rows}, 10";
$result = mysql_query($search_query);
$num_rows_result = mysql_query("SELECT FOUND_ROWS()");
$num_rows = mysql_fetch_assoc($num_rows_result);
$num_rows = $num_rows['FOUND_ROWS()'];
if($num_rows== 0){
$message="該当データは見つかりませんでした。";
}
else $message=$num_rows ."件該当しました<br/>";
echo $message;
while($row = mysql_fetch_array($result)
2行目でGETした文字をmysql_real_escape_string()で囲っただけですが大丈夫でしょうか。。
No.2ベストアンサー
- 回答日時:
ちなみにざっと書くとこんな感じですね
先頭と後尾を除く$usersearchに含まれる「半角スペース」か「全角読点(、)」
「半角カンマ(,)」を使ってセパレートする
なおWHEREは常に「WHERE 1」をつけるようにしてください
それにANDでつなげば無駄なフローをはぶけます
<?PHP
$sql = "SELECT * FROM king WHERE 1";
$usersearch= ",aaa b、ccc,ddd , , , eee ";
$pattern="/^[,、\s]+|[,、\s]+$/";
$usersearch = preg_replace($pattern,'',$usersearch);
$pattern="/[,、\s]+/";
$search_words = preg_split($pattern,$usersearch);
foreach ((array) $search_words as $word) {
$sql.=" AND syou LIKE '%".mysql_real_escape_string($word)."%'";
}
print $sql;
//LIMIT句は省略
?>
No.1
- 回答日時:
mysql_real_escape_stringするのはクエリに投入する直前が望ましいです。
余談ですが、LIKEの検索にANDでつないでますがそうなると
両方の条件に合致しないとヒットしませんがよろしいのですか?
またたとえば出現順なども有効にするのであればもう少し書き方がかわってきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで実行時エラー'424' オブジェクトが必要ですと出る 2 2022/10/07 09:25
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- PHP Q&Aサイトを作成していてURLの生成方法について迷っているのでアドバイスお願い致します 1 2023/08/10 16:42
- PHP PHP MySql ページング 2 2022/09/20 06:38
- 英語 Results: In total, 5,963 titles were identified wi 4 2022/12/29 21:29
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- 英語 文法的解釈を教えてください 1 2023/06/22 10:05
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL文2つ実行
-
エラーの意味と対策
-
PHP+mysqlでSQL文に文字数制限...
-
!助けて!ZAMPP使用のPHP/MySQL...
-
MYSQLにINSERTできません。
-
データベースから多次元連想配...
-
PHP下記エラーメッセージ解決法...
-
飲食店のメニュー表を作成中。M...
-
PHPでのデータ表示画面⇒CSV出力...
-
MySQLのUPDATE実行結果を受け取...
-
トランザクション処理
-
エクセルVBAについて
-
SQL文の実行に失敗しました???
-
VBAをつかってクエリの情報を抽...
-
PHPでMY SQLの連想配列をリンク...
-
PHP + MySQLを使用して詳細画面...
-
Q&Aサイトを作成していてURLの...
-
MySQLでshal()関数のエラーがで...
-
SQL文が実行できません
-
mysql_fetch_objectの書き方を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysql_fetch_objectのエラー
-
XAMPPで画面が真っ白になります。
-
テーブルに入っているデータと...
-
sqlから多次元配列に要素を格納...
-
PHP+mysqlでSQL文に文字数制限...
-
stringaddslashes 半角¥が消える
-
phpのエラーについてです
-
PHPで絞り込み検索結果の件数を...
-
PHPエラーが出て困ってます
-
PDOを使いたい
-
CSVをダウンロードさせた際、CS...
-
ボタンのonclick時における関数...
-
mysql_query等でレコード数を変...
-
Resource id #3 をフィールドの...
-
SQL文2つ実行
-
XAMMPが起動しません。
-
SQLの結果が返ってこない
-
PHPのSQLインジェクションはspr...
-
MySQLのデータを使ってプルダウ...
-
会員登録したらメールが送られ...
おすすめ情報