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

标签 php mysql

我有一些 sql 从表单输入中搜索数据库表中的数字。

一个很好的例子是下面的行:

124
1240
12400
124000

我的sql是一个简单的like语句:

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

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

我的问题是,如果用户输入 12400000,我如何返回包含 124000 的行? 我假设我需要循环遍历数字直到找到一行?

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

对于 php 和/或 SQL,有没有一种方法可以让我在字符串上倒数到定义的点?字符串回到第三个字符?

最佳答案

只需从该输入创建一个数组并使用 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')
}

关于PHP MySQL - 循环返回数字直到找到结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12458485/

相关文章:

mysql - 找不到 heroku JAWSDB 主机

MySQL Workbench(版本 6.0.8)SSH 身份验证问题

php - 使用 MySQL 面向 future 的邻近搜索

MySQL好友表查询

java - 将 hash_hmac 转换为 android java

Javascript 范围和顺序问题

javascript - 单击编辑按钮后显示更新和取消按钮

c# - 如何在 C#.NET、PHP 和 MySQL 之间获得通用的编码?

mysql - 显示一个表的 FULLTEXT 索引列

php - 要求一次记录错误的PHP用法