как искать точный номер
этот код работает так
если я ищу 24626838 (это полный нет), он ничего не показывает
после этого, если я ищу это 2462683 (это не полный нет)
поэтому он показывает результат, подобный этому
как это
24626838 24626838 24626836 24626832 24626837
и я хочу получить такой результат
если я ищу это 24626838 (это не полный)
поэтому он точно выглядит так
24626838 24626838
как я могу это сделать, пожалуйста, помогите мне исправить эту проблему
и это код
<?php //connect to database mysql_connect('localhost','root',''); mysql_select_db('member'); $alphabet = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); foreach ($alphabet as $letter) { echo "<a href=\"viewuser.php?letter=" . $letter . "\" class=\"style2\">" . $letter . "</a> | "; } echo "<br>"; echo "<a href=\"index.php?\" class=\"style2\">Show All</a></p><br /> <form method=\"post\" action=\"?\"> <input type=\"hidden\" name=\"letter\" value=\"{$_GET['letter']}\" />"; $page = (empty($_GET['page'])) ? 1 : $_GET['page']; $letter = (empty($_GET['letter'])) ? "%" : $_GET['letter']; $name = (empty($_GET['name'])) ? "%male" : $_GET['name']; ?></td> </tr> <p> <?php //get date $button = $_GET['submit']; $search = $_GET['search']; $s = $_GET['s']; if (!$s) $s = 0; $e = 12; $next = $s + $e; $prev = $s - $e; if (strlen($search)<=1) echo ""; else { echo "<class=\"style2\"> You searched for <b>$search</b>"; //connect to database mysql_connect('localhost','root',''); mysql_select_db('member'); //explode search term $search_exploded = explode(" ",$search); foreach($search_exploded as $search_each) { $str = mysql_real_escape_string(substr($search_each, 0, 9)); //construct query $x++; if ($x==1) $construct .= "number LIKE '$str%'"; } //echo out construct $construct = "SELECT * FROM workorder WHERE $construct"; $run = mysql_query($construct); $foundnum = mysql_num_rows($run); if ($foundnum==0) echo "<class=\"style2\">No user found."; else { ?> <?php echo "<class=\"style2\"><p>$foundnum results found.</p>"; while ($runrows = mysql_fetch_assoc($run)) { echo "<table class='hovertable' border='1' cellpadding='0' cellspacing='0'>"; echo "<tr><th>User name</th><th>Number</th><th>Exchange</th><th>Cabnint</th><th>Service</th><th>Open Date</th><th>Close Date</th><th>Remaks</th><th>Status</th><th>Edit</th><th>Detail</th><th>Delete</th></tr>"; if ($runrows > 0) { while($runrows = mysql_fetch_array($run)) { echo "<tr><td>"; echo $runrows['username']; echo "</td><td>"; echo $runrows['number']; echo "</td><td>"; echo $runrows['exchange']; echo "</td><td>"; echo $runrows['cabnint']; echo "</td><td>"; echo $runrows['service']; echo "</td><td>"; echo $runrows['opendate']; echo "</td><td>"; echo $runrows['closedate']; echo "</td><td>"; echo $runrows['remaks']; echo "</td><td>"; echo $runrows['status']; echo "</td><td>"; echo '<a href="edit.php?id=' . $runrows['id'] . '" class="style2">Edit</a>'; echo "</td><td>"; echo '<a href="detail.php?id=' . $runrows['id'] . '" class="style2">Detail</a>'; echo "</td><td>"; echo '<a href="delete.php?id=' . $runrows['id'] . '" class="style2">Delete</a>'; echo "</td></tr>"; } } else { echo "<tr><td colspan=\"5\">No results found!</td></tr>"; } echo "</table>"; } } } ?>
Если вы хотите найти точный номер, используйте column='$number'
вместо column LIKE $number
. В WHERE
я предлагаю заключать четные числа в одинарные кавычки, потому что недавно я столкнулся с проблемой, которая, используя WHERE column = 1234
также соответствует 12345
, но WHERE column = '1234'
соответствует только самому точному числу.
Я думаю, проблема здесь:
number LIKE '$str%'
Не используйте это. Вместо этого попробуйте сделать так:
number = '$str'
Так что он выполняет строгий SELECT
вместо поиска. Когда вы даете %
, он может ожидать чего-то еще (или нет, я не уверен в этом).
Кроме того, не рекомендуется использовать LIKE
для чисел. Это всего лишь предложение.
Он должен попробовать попробовать
if ($x==1) $construct .= "number LIKE '".$str."%'";