ホームページ >バックエンド開発 >PHPチュートリアル >初心者が検索について質問です。

初心者が検索について質問です。

WBOY
WBOYオリジナル
2016-06-23 14:24:35878ブラウズ

私は PHP を独学で勉強していますが、検索ボックスを作成しているときに問題が発生しました。検索文字列を入力すると、スペースで始まりその後に何かが続く限り、テーブル内のすべてのデータが表示されます。それが何なのか理解できずに長い間過ごしました。問題は次のようなものです
if(isset($_GET['sousuok'])){
if(ctype_space($_GET[' sousuok'])){
echo "不正なデータです!"
}else{
require_once '../connvar.php'; =mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
mysql_query("SET NAMES 'UTF8'")
$exec="select * from cangku where name like '%$s[0]%' または '%$s [1]%';";
$result=mysqli_query ($dbc,$exec);
if(mysqli_num_rows($result)>0){
while($rs=mysqli_fetch_object($result)){
$name =$rs->name;
$tu=$ rs->biaoqiantu;
echo "

".$name.""."

";
};
echo mysqli_num_rows($result);
}else{
echo mysqli_num_rows($result);
echo "見つかりません!";
};
mysqli_free _result ();// メモリを解放します
メモリを解放します
mysqli_close();/// データベースを切断します
}
}

?>


ディスカッションに返信 (解決策)

$s=explode(" ",$ _GET['sousuok']);

$_GET['sousuok'] がスペースで終わる場合、$s[0] は空の文字列になります
したがって、$exec="select * from cangku where name like '%$ s[0]%' または '%$s[1]%';";
は $exec="select * from cangku where name like '%%' or '%query word%';";
name like ' になります%%' は常に確立され、当然それがコンテンツ全体となります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。