У меня возникают проблемы с выяснением того, как реализовать поиск по базе данных SQL при поиске деталей с не алфавитно-цифровыми символами.
Поиск работает отлично, за исключением случаев, когда есть такой символ, как дефис,или скобки в искомом номере детали.(Некоторые номера деталей имеют косую черту, но при запросе они возвращаются должным образом.)
Например: поиск 1492-PDL3111 возвращает 0 результатов.(Частичный поиск строки работает хорошо, поэтому, если я ищу 1492, я получу номер детали 1492-PDL3111, возвращенный вместе с 1492-PDL31124, 1492-PDL3141, 1492-PDL3161, что замечательно, но если я включу дефис, я 'm обратно к 0 результатам. Я также получаю правильные результаты, когда выполняю частичный поиск строки из середины или конца строки. Единственная ошибка - это когда я выполняю поиск номера детали, который имеет нечисловые символы.
Я вставляю приведенный ниже код с надеждой, что кто-то здесь может помочь. Я искал и искал решение безрезультатно.
Заранее спасибо! Thymallus
<?php
$searchcross=$_GET[ 'crossref'];
$remove=array( " ", "-");
$searchcross=str_replace($remove, "", $searchcross);
if ($searchcross !="" ){
$query=$handler->prepare("SELECT * FROM php_cross_reference WHERE competitor_part_no LIKE :part_no ORDER BY competitor_part_no;");
$query->bindValue(':part_no', '%' . $searchcross . '%');
$query->execute();
if ($query->rowCount()){ ?>
<!--If statement, only make this if there are results?-->
<div class="table-section">
<table class="search-table search-table-alt">
<caption>
<?php echo 'Search results for "'. $searchcross . '"' ?>
</caption>
<tr>
<th>Competitor Part Number</th>
<th>Competitor</th>
<th>Our Part Number</th>
</tr>
<!--This is where the PHP loop should begin-->
<?php
while ($r=$query->fetch(PDO::FETCH_ASSOC)){
?>
<tr>
<td>
<?php
echo '<strong>',$r[ 'competitor_part_no'], '</strong>'
?>
</td>
<td>
<?php
if ($r[ 'competitor_name']){
echo $r[ 'competitor_name'];
} else {
echo 'N/A';
}
?>
</td>
<td>
<?php
if ($r[ 'product_documentation']){
echo '<strong><a href="',$r[ 'product_documentation'], '">',$r[ 'our_part_no'], '</a></strong>';
} else {
echo '<strong>',$r[ 'our_part_no'], '</strong>';
} ;?>
</td>
<?php
}
//PHP loop end
?>
</table>
</div>
<!-- PHP if statement end?-->
<?php
} else {
echo '<h3 class="module">Your search returned '.$query->rowCount().' results.</h3>';
}
} else {
echo '<h3 class="module">please enter a search</h3>';
}
?>