Как найти точное число в php

как искать точный номер

этот код работает так

если я ищу 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>&nbsp;|&nbsp;"; } 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."%'";