1<?php2ini_set('display_errors',1);3error_reporting(E_ALL);45functionh($string)6{7returnhtmlspecialchars($string,ENT_QUOTES,'utf-8');8}910functionstr2array($string)11{12$formatted=mb_convert_kana($string,'KVas','utf-8');13$arr=explode(' ',$formatted);14$res=[];15foreach($arras$v){16if(''!=$v){17$res[]=$v;18}19}20return$res;21}2223functionmakeSql()24{25$arrFieldsForGet=['f_get1','f_get2'];26$arrFieldsForPost=['f_post1','f_post2'];2728$get=str2array(filter_input(INPUT_GET,'tag'));29$post=str2array(filter_input(INPUT_POST,'search'));3031$arrParams=[];3233$sql="SELECT * FROM table ";34$sql.="WHERE 1 ";3536$sqlGet='';37foreach($getas$v){3839$arrOrSql=[];40foreach($arrFieldsForGetas$field){41$arrOrSql[]="{$field} LIKE ?";42$arrParams[]=sprintf("%%%s%%",$v);43}4445$sqlGet.=sprintf(" AND (%s)",implode(' OR ',$arrOrSql));46}47$sql.=$sqlGet;4849$sqlPost='';50foreach($postas$v){5152$arrOrSql=[];53foreach($arrFieldsForPostas$field){54$arrOrSql[]="{$field} LIKE ?";55$arrParams[]=sprintf("%%%s%%",$v);56}5758$sqlPost.=sprintf(" AND (%s)",implode(' OR ',$arrOrSql));59}60$sql.=$sqlPost;6162return['sql'=>$sql,'params'=>$arrParams];63}64?>65<!DOCTYPEHTML>66<htmllang="ja">67<head>68<metacharset="UTF-8">69<title></title>70</head>71<body>72<h2>タグ(GET)</h2>73<formaction=""action="get">74<labelfor="tag">タグ</label>75<inputtype="text"name="tag"value="<?=h(filter_input(INPUT_GET,'tag'));?>"/>76<buttontype="submit">検索</button>77</form>7879<h2>キーワード(POST)</h2>80<formaction=""method="post">81<inputtype="text"name="search"value="<?=h(filter_input(INPUT_POST,'search'));?>"/>82<buttontype="submit">検索</button>83</form>8485<h2>出力</h2>86<h3>GET</h3>87<pre><?=h(filter_input(INPUT_GET,'tag'));?></pre>8889<h3>POST</h3>90<pre><?=h(filter_input(INPUT_POST,'search'));?></pre>9192<h3>SQL</h3>93<pre><?phpvar_dump(makeSql());?></pre>94</body>95</html>