検索エンジンを作りたい。この次のコードを取得しました。このコードは、スペースを削除し、行を数え、一致する結果の数を数え、SQL インジェクションを少し証明するように書かれています。これらの属性はすべて機能しますが、検索自体は結果を表示しません。エラー報告もありません。私はこのコードをしばらく見直してきましたが、何が問題なのかわかりません。これが mysql で非推奨であることはわかっていますが、それでも機能するはずだと考えました。Mysql が廃止されたために機能しない理由は何ですか? それとも、私が犯した間違いを見つけることができますか? うまくいけば、私の質問は十分に明確です。
索引:
<form action = "" method="POST">
<p>
<input type="Text" name="keywords" /> <input type="submit" value="Search" />
</p>
</form>
<?php
if (isset($_POST['keywords'])) {
$keywords = mysql_real_escape_string(htmlentities(trim($_POST['keywords'])));
$errors = array();
if (empty($keywords)) {
$errors[] = 'Please enter a search term';
} else if (strlen($keywords)<3) {
$errors[] = 'Your search term must be three or more characters';
} else if (search_results($keywords) === false) {
$errors[] = 'Your search for '. $keywords .' returned no results';
}
if (empty($errors)) {
echo '<p>Your search for <strong>', $keywords ,'</strong> returned <strong> </strong> results</p>';
foreach($results as $result) {
echo '<p> <strong>', $result['Categorie'],' <br> ', $result['SerieNummer'] ,' <br> ', $result['MacAdress'] ,'</a> </p>';
}
} else {
foreach($errors as $error) {
echo $error, '</br>';
}
}
}
?>
構成:
<?php
include 'db.inc.php';
function search_results($keywords) {
$returned_results = array();
$where = "";
$keywords = preg_split('/[\s]+/', $keywords);
$total_keywords = count($keywords);
foreach($keywords as $key=>$keyword) {
$where .= "`keywords` LIKE '%$keyword%'";
if ($key != ($total_keywords -1)) {
$where .= " AND ";
}
}
$results = "SELECT `calleridname`, LEFT(`calleridnum`, 70) as `calleridnum`, `callapiid` FROM `callflow` WHERE $where";
$results_num = ($results = mysql_query($results)) ? mysql_num_rows($results): 0;
if ($results_num === 0) {
return false;
} else {
while ($results_row = mysql_fetch_assoc($results)) {
$returned_results[] = array(
`calleridname` => $results_row['calleridname'],
`calleridnum` => $results_row['calleridnum'],
`callapiid` => $results_row['callapiid'],
);
}
return $returned_results;
}
}
?>