PHP MySQL - 循环回数,直到找到结果

时间:2012-09-17 11:43:46

标签: php mysql

我有一些sql在db表中搜索表单输入中的数字。

一个很好的例子是以下几行:

124
1240
12400
124000

我的sql是一个简单的声明:

SELECT NUMBER FROM TABLE WHERE NUMBER LIKE '$number%'

如果用户搜索了124,我会找到4行,这很好。

我的问题是,如果用户键入12400000,我该如何返回124000行? 我假设我需要循环回数,直到找到一行?

我的输入在运行sql之前需要最少3个数字,所以我想在3个数字处停止循环。

使用php和/或SQL,是否有一种方法可以让我将字符串重新计算到定义的点;字符串回到第3个字符?

2 个答案:

答案 0 :(得分:0)

您可以使用str_replcace并在找不到任何内容的情况下删除最新版本。 更多信息:http://php.net/manual/de/function.str-replace.php

更好的方法是使用此搜索字符串显示找不到任何内容

答案 1 :(得分:0)

只需从该输入中创建一个数组并使用IN

$_POST['number'] = '124000';

$number = (string)(int)$_POST['number'];

$numbers = array();
$inNumber = '';
if(strlen($number) > 2){
    $baseNumber = substr($number, 0, 3);
    $numbers[] = $baseNumber;
    for($i=3; $i<=strlen($number)-1; $i++){
        $inNumber.= $number[$i];
        $numbers[] = $baseNumber.$inNumber;
    }

    $tosearch = implode("','", array_reverse($numbers));
    $query = "SELECT * FROM `TABLE` WHERE `NUMBER` IN ('".$tosearch."') ORDER BY FIELD(`id`, '".$tosearch."')";
    echo $query; // SELECT * FROM `TABLE` WHERE `NUMBER` IN ('124000','12400','1240','124') ORDER BY FIELD(`NUMBER`, '124000','12400','1240','124')
}