Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带有“的子查询”;任何;而不是全部_Php_Mysql - Fatal编程技术网

Php 带有“的子查询”;任何;而不是全部

Php 带有“的子查询”;任何;而不是全部,php,mysql,Php,Mysql,有一个搜索功能,你可以把电话号码,它将搜索在数据库中的所有号码 因为我想搜索所有数字字段,如手机和家用电话,所以我编写了以下代码: 'query_type' => 'default', 'db_field' => array ( 0 => 'phone_mobile', 1 => 'phone_work', 2 => 'phone_other', 3 => 'phone_fax',

有一个搜索功能,你可以把电话号码,它将搜索在数据库中的所有号码

因为我想搜索所有数字字段,如手机和家用电话,所以我编写了以下代码:

'query_type' => 'default',
    'db_field' => 
    array (
      0 => 'phone_mobile',
      1 => 'phone_work',
      2 => 'phone_other',
      3 => 'phone_fax',
      4 => 'phone_home',
    ),
我的问题是:有时电话号码不包含国家代码,例如,如果您搜索该号码:0547896564,则不会显示在结果中,因为该号码存储的国家代码为:0096655454445或+966554445

所以要解决这个问题:我试着让搜索从右到左进行,比如:这个数字0096655454445如果你想搜索它,你可以把最后6个数字写在454445上,它就会出现在结果中

如何通过搜索任意组合号码而不是整个电话号码来进行搜索?

我四处搜索,发现我需要一个叫做子查询的东西 因此,我的代码如下所示:

 'phone' => 
  array (
    'query_type' => 'format',
  'operator' => 'subquery',
'subquery' => "I don't really know what exactly should I write here"
  'db_field' => 
    array (
      0 => 'phone_mobile',
      1 => 'phone_work',
      2 => 'phone_other',
      3 => 'phone_fax',
      4 => 'phone_home',
    ),
  ),

查看字符串中搜索字符串匹配模式的具体问题,最简单的解决方案是使用SQL search LIKE,因此phone_mobile字段的示例如下:

SELECT * FROM YourTable
WHERE mobile_phone LIKE ?;
where子句的参数格式应为%textNumber%(例如%3743%)。这里的%作为搜索的通配符

除了在多个字段中搜索的问题之外,我还将亲自为每个字段运行sql语句,并填充一个结果数组


建议尝试或与同类产品结合使用

SELECT * FROM yourTable WHERE (phone_mobile LIKE '% $number %' OR phone_work LIKE '% $number %' OR phone_other LIKE '% $number %' OR phone_fax LIKE '% %number %' OR phone_home LIKE '% $number %')
我想通过键入任何组合数字来搜索数字,例如,这个数字006547899844我可以通过键入4789或99844或654来搜索。没有(简单的)方法来改进对字符串中子字符串的搜索<代码>其中像CONCAT(“%”,条件“%”)这样的列不能使用索引。仅当条件是可以改进的值的前缀或后缀时。