3

送信された値を含む不正確な一致/一致を検索するには、MySQL クエリを実行する必要があります。

以下は、私のデータベースにあるものの例です。

id               img
1          1001_ABC_01.jpg
2          1001_ABC_02.jpg
3          1002_ABC_01.jpg
4          1002_ABC_02.jpg
5          1002_ABC_03.jpg
6          1002_ABC_04.jpg
7          1002_ABC_05.jpg
8          1003_ABC_01.jpg
9          1003_ABC_02.jpg
10         1003_ABC_03.jpg

ファイル名の最初の部分 ( ) を検索し、1002返された各結果を img フィールドに異なる変数に割り当てるクエリが必要です。変数の最大数は 5 です。

たとえば、 を検索する1002と、次の変数を割り当てる必要があります。

    <?php
    $img1 = '1002_ABC_01.jpg';
    $img2 = '1002_ABC_02.jpg';
    $img3 = '1002_ABC_03.jpg';
    $img4 = '1002_ABC_04.jpg';
    $img5 = '1002_ABC_05.jpg';
    ?>

そうすれば、各ファイル名の結果を個別にエコーできます。

ここでも変数の最大数は 5 であるため、5 つを超える結果が返された場合、最初の 5 つだけが変数に割り当てられます。

これが可能かどうか、またそれを行うための PHP スクリプトの書き方を教えてください。

4

10 に答える 10

1

これがお役に立てば幸いです。常に最新のAPI とMySqliのような関数を使用するようにしてください

$img = '1002'; // For example
$connection = new Mysqli(host, user, password, database);
$sql = "SELECT img FROM <table_name> WHERE img LIKE '$img%' LIMIT 5";

if($connection->query($sql)){
    $counter = 1;
    while ($row = $connection->fetch_object()){
        ${'img'.$counter} = $row->img;
        $counter++;
    }
}
于 2012-11-15T05:19:11.330 に答える
1
SELECT img FROM <table_name> WHERE img LIKE '%search%' ORDER BY ID DESC LIMIT 5;

substring最初の 4 つの整数が次のように固定されている場合、機能する可能性があります。

select substring(img,1,4) from <table_name> where img = 'search' order by ID DESC limit 5;
于 2012-07-04T06:39:43.860 に答える
0
$query = "SELECT * FROM my_table WHERE img_name LIKE '%1002%' LIMIT 5";

foreach ( $fetched_row as $value ) {
  echo $value [ 'img_name' ]; // or whatever you want to do
}

そんな感じ。

于 2012-07-04T06:34:24.390 に答える
0

コードは次のようになります。

$input = '1002'; // For example
$query = "SELECT id, img FROM table_blah WHERE img LIKE '$input%' LIMIT 5";

このクエリは、基本的にテーブルからid と imgを選択しており、1002 と同じである必要があり、それ以降は絶対に意味があります。結果は 5 件に制限されています。table_blahimg%

それで:

$result = mysql_query($query);

while ($row = mysql_fetch_array($result)) {
    // Code for each result here.
    // id = $row['id']
    // img = $row['img']
}
于 2012-07-04T06:34:56.363 に答える
0

このクエリを使用

SELECT img as IMG
FROM my_table
WHERE img LIKE '1002%'
order by id desc
LIMIT 5
于 2012-07-04T06:36:53.673 に答える
0
     $query = "SELECT * FROM img_table WHERE img_name regexp concat('1002', '%')"
     $results = mysql_query($query);

$results は img 文字列の配列です

于 2012-11-06T19:43:39.653 に答える
0
<?php
  $query="SELECT id,img as image FROM image_table 
  where img like '%$keyword%' limit 5";
  $res=mysql_query($query) or die(mysql_error());
  while ($img = mysql_fetch_array($res)) {
    echo $img['image'];
  }
?>
于 2012-07-04T06:39:07.570 に答える
0
$con = new Mysqli(host, user, password, database);
$result = $con->query("SELECT * FROM table WHERE image LIKE %$search% ORDER BY id DESC LIMIT 5");
if($result){
    while ($row = $con->fetch_object()){
        $img_arr[] = $row;
    }
}
于 2012-07-04T06:42:01.050 に答える
0

これがお役に立てば幸いです。

$queryStr = "SELECT img FROM table_name WHERE search_str LIKE '1002%'";
$query = mysql_query($queryStr);

while($row = mysql_fetch_assoc($query)){
    $imageArray[] = $row;   
}

// Print the array
echo '<pre>';
print_r($imageArray);
echo '</pre>';

// How to use the array
foreach($imageArray as $key=>$val){
    echo 'File Name: '.$val;
    echo '<br />';
    echo '<img src="'.$val.'" />';  
    echo '<hr />';
}

// Now show first five result
    // Alternet: You can use LIMIT and order by with mysql
// With php
for($i=0;$i<5;$i++){
    echo 'File Name: '.$imageArray[$i];
    echo '<br />';
    echo '<img src="'.$imageArray[$i].'" />';   
    echo '<hr />';  
}
于 2012-07-04T06:45:00.863 に答える
0

部分一致を検索するにはLIKE、SQL で演算子を使用できます。この場合、次のように記述できます。

$sql = "SELECT img FROM tablename WHERE img like '1002%'";

このクエリを実行して PHP で結果を取得する方法は、使用しているデータベース API によって異なります: 古い MySQL? MySQL? PDO? また、1002おそらくユーザー入力であり、その場合、プログラムを SQL インジェクション攻撃から保護する必要があります。

2 番目の部分については、配列ではなく別の変数名が必要ですか? 配列ははるかに使いやすいです。最初にデータを配列に蓄積してから使用すると、さまざまな変数名を取得できますextract

$result = array();
$counter = 1;
$rs = mysql_query($sql); // using old mysql API

while ($row = mysql_fetch_array($rs)) {
    $result["img".$counter] =  $row[0];
    $counter = $counter + 1;
}

extract($result);
// now $img1, $img2, $img3, ... are defined
于 2012-07-04T06:47:04.757 に答える