PHPスペース区切り、複数単語が検索できません
お日ごろから大変お忙しい中、この投稿を見て頂きまして誠に有難うございます。私はPHP初心者です。もしこの投稿記事内容自体が私の勉強不足のために不適切な内容となっておりましたら大変申し訳ございません。至らない能力をご容赦して頂きたく存じ上げます。
現在、個人のサイトを作成しております。そこで合計6000点ほどの点数に対し文言が添えております。その文言(カラム/side_text)をフォーム検索で抽出したいのですが、単語だけならできるのですが、複数単語(スペース区切り)で検索をすると、どうしても上手くいきません。
下記にソースコードがございますので、もしお時間がございましたら、ご教授して頂けますと大変嬉しく思います。
var_dampで各要所をチェックしていったら複数単語でもちゃんとdbc.phpファイルの
$result = $stmt->fetchALL();
return $result;
まで返しているので、htmlへの出力方法がおかしいのかと思ったのですが、どうしても最後の最後はvar_damp()array(0)になってしまいます。
▼▼▼▼▼【var_damp(result)の結果】▼▼▼▼▼
「確定」と「福来い」を検索した場合
string(59) "(side_text LIKE "%確定%") AND (side_text LIKE "%福来い%")" array(0) { }
▲▲▲▲▲【var_damp(result)の結果】▲▲▲▲▲
test.phpページです
▼▼▼▼▼【フォーム検索送信】▼▼▼▼▼
<form action="search.php" method="POST">
<input type="text" name="search" placeholder="検索ワードを入力して下さい" autocomplete="off">
<input type="submit" value="SAERCH">
</form>
【html内の出力結果】
<?php if(isset($results)) : ?>
<?php foreach($results as $result) : ?>
<?php echo $result['side_text'] ; ?>
<?php endforeach ; ?>
<?php endif ; ?>
▲▲▲▲▲【フォーム検索送信】▲▲▲▲▲
search.phpページです
▼▼▼▼▼【フォーム検索送信/test.phpから受け取り】▼▼▼▼▼
$err = [];
if(!$search = filter_input(INPUT_POST, 'search')){
$err['search'] = '検索ワードを入力して下さい';
}
if(count($err) > 0){
$_SESSION = $err;
header('Location: test.php');
return;
}
if(count($err) === 0){
$results = search($_POST['search']);
}
▲▲▲▲▲【フォーム検索送信/受け取り】▲▲▲▲▲
dbc.phpページです
▼▼▼▼▼【dbc.phpページ】▼▼▼▼▼
function search(){
$result = false;
$keywords = $_POST['search'];
$keywords = mb_convert_kana($keywords, 's');
$ary_keyword = preg_split('/[\p{Z}\p{Cc}]++/u', $keywords, 5, PREG_SPLIT_NO_EMPTY);
$ary_keyword = explode(" " ,$keywords, 5);
$keywordCon = [];
foreach( $ary_keyword as $keyword ){
$keywordCon[] = '(side_text LIKE "%' . $keyword . '%")';
}
$keywordCon = implode(" AND ", $keywordCon);
$sql = "SELECT * FROM test1 WHERE". $keywordCon;
var_dump($keywordCon);
try{
$stmt = dbc()->prepare($sql);
$result = $stmt->execute();
$result = $stmt->fetchALL();
return $result;
}catch(\Exception $e){
echo 'Something wrong 3'. $e->getMessage();
return $result;
}
}
▲▲▲▲▲【dbc.phpページ】▲▲▲▲▲
間違いだらけのコーディングとは存じ上げますが、どうぞよろしくお願い申し上げます。
お礼
ありがとうございます。 この3つはなんか特殊な文法で、ちょっとわからなくて・・・ 日本の紙の辞典にも、書いてないんですよ。 たぶん、同じ意味だと思っていたので、安心しました あと、「国語」で質問をしていたのを見かけたんですが、 ・文法的間違い ・奇妙と感じるので間違い←日本人によって異なる の、二種類があって、 Isuzumiさんの日本語は、「文法的間違い」が全くないので、 「奇妙と感じるので間違い」を直すには、一人の日本人の指導を受けたほうがいいですよ。 ただ、現在のままでほとんど完璧ですよ 日本人並みの日本語力が必要なんですか?