我有一个移动验证字段,它给出一个消息,如果我们键入相同的数字/值,如果该值不存在,则该值存在于数据库中。
以下是目前正在使用的查询:-

SELECT mobile FROM candidate_tabletest WHERE mobile  LIKE '%' '$mobile' '%'

在某些情况下,上述查询不起作用。例如,如果我们在数据库中有123456789号,当我们用代码或任何其他格式(如+91-123456789)在移动字段中键入时,它仍然显示移动号码可用。
以下是我在移动领域的HTML代码:-
<input type="text" class="form-control" id="mobile" name="mobile"    placeholder="mobile" value="+91" onkeyup="checkmobile();" >

检查PHP代码:-
  <?php

   $host = 'localhost';
   $user = 'root';
   $pass = '';

   mysql_connect($host, $user, $pass);

   mysql_select_db('appsrx1a_skyfler');

  if(isset($_POST['user_mobile']))
  {
   $mobile=$_POST['user_mobile'];

   $checkdata=" SELECT mobile FROM candidate_tabletest WHERE mobile  LIKE      '$mobile' '%' ";

    $query=mysql_query($checkdata);

   if(mysql_num_rows($query)>0)
  {
   echo '<span style="color:red;"><b>Mobile  Already Exists</b></span>';
  }
  else
    {
   echo '<span style="color:green;"><b> Available</b></span>';
     }
 exit();
 }

如果数据库中存在号码(123456789),即使用户将手机号码键入+91-123456789或任何其他格式。它应该给出一个警告信息,说明这个数字已经存在。

最佳答案

你应该用concat。。为了建立一个合适的字符串模式

 SELECT mobile FROM candidate_tabletest WHERE mobile  LIKE concat( '%', '$mobile', '%' );

正如戈登·林诺夫·雷姆伯建议的那样
 SELECT mobile
 FROM candidate_tabletest
 WHERE mobile  LIKE concat( '%', REPLACE(REPLACE('$mobile', '-', '') , '+', ''), '%' );

如果你只需要手机号码的正确部分,那么你可以使用
 SELECT mobile
 FROM candidate_tabletest
 WHERE mobile  LIKE concat( '%', SUBSTRING_INDEX('$mobile', '-', -1), '%' );

关于php - SQL:LIKE子句以匹配值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42626064/

10-11 13:12