1

フォーム入力から数値をデータベーステーブルで検索するSQLがあります。

良い例は次の行です。

124
1240
12400
124000

私のSQLは次のような単純なステートメントです。

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

使用で124を検索すると、4行が見つかります。これで問題ありません。

私の質問は、ユーザーが12400000と入力した場合、124000で行を返すにはどうすればよいですか?行が見つかるまで番号をループバックする必要があると思いますか?

私の入力では、SQLを実行する前に最低3つの数値が必要なので、ループを3つの数値で停止したいと思います。

phpやSQLを使用して、定義されたポイントまで文字列をカウントバックできるメソッドはありますか。文字列を3番目の文字に戻しますか?

4

2 に答える 2

0

何も見つからない場合は、str_replcace を使用して最新のものを削除できます。詳細: http://php.net/manual/de/function.str-replace.php

より良い方法は、この検索文字列を使用して何も見つからないことを表示することです

于 2012-09-17T11:49:04.503 に答える
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')
}
于 2012-09-17T11:55:02.330 に答える