<?php
require_once 'sqlTools.class.php';// , dql、dml
$info=$_POST['info'];
$sql="select name,password,email from user_500 where name like '%$info%' or password like '%$info%' or email like '%$info%'";
$sqlTools=new SqlTools();
$res=$sqlTools->execute_dql($sql);
while ($row=mysql_fetch_assoc($res)){
$row['name']=preg_replace("/($info)/i","<b style=\"color:red\">\\1</b>",$row['name']);
$row['password']=preg_replace("/($info)/i","<b style=\"color:red\">\\1</b>",$row['password']);
$row['email']=preg_replace("/($info)/i","<b style=\"color:red\">\\1</b>",$row['email']);
echo $row['name']."-->".$row['password']."-->".$row['email']."<br>";
}
?>
考え方分析:sql文に含まれる%info%をDBMSに渡して実行すると、彼はフィールドに変数$infoの値が含まれている情報を検索します。%info-->は$infoの値で終わる情報を検索します。replace()は検索したキーワードをハイライト表示します。例えば、$row['name]=preg_replace(/($info)/i)、“b style=”カラーred\\1”、“row['name]];POST側で受信した値を、パターン(赤太字)を加えた結果に置き換えて、その結果をドルrow[name]に再割り当てます。複数のキーワードを検索すると、受信した値をinfoに分割することができます。more=explode('、$info)//このように、スペースで区切られたキーワードを分割し、分割した結果を逐次検索することができます。同様に、正規表現関数を使って代替作業を行い、キーワードsql Tools.class.phpのソースコードをハイライト表示します。
<?php
class SqlTools{
private $host="localhost";
private $dbname="test";
private $dbuser="root";
private $dbpwd="";
private $conn;
public function __construct(){
$this->conn=mysql_connect($this->host,$this->dbuser,$this->dbpwd);
if(!$this->conn){
die(" ".mysql_error());
}
mysql_select_db($this->dbname,$this->conn) or die(" ".mysql_error());
mysql_query("set names utf8");
}
public function execute_dml($sql){
$bool=mysql_query($sql);
if ($bool){
if ($bool>0) {
return 1;
}else{
return 2;
}
}else {
return 0;
}
}
public function execute_dql($sql){
$res=mysql_query($sql);
return $res;
}
public function close_conn(){
mysql_close($this->conn);
}
}
?>
オリジナル記事:WEB開発_小飛び