0

次のコードを使用して、データベースから行を取得しています

$get_brand_filter_result = mysql_query("SELECT * FROM brand WHERE ('$arrBrands[0]'     LIKE CONCAT(brand_name, '%')
OR '$arrBrands[1]' LIKE CONCAT(brand_name, '%')
OR '$arrBrands[2]' LIKE CONCAT(brand_name, '%')
OR '$arrBrands[3]' LIKE CONCAT(brand_name, '%')
OR '$arrBrands[4]' LIKE CONCAT(brand_name, '%')
OR '$arrBrands[5]' LIKE CONCAT(brand_name, '%')
OR '$arrBrands[6]' LIKE CONCAT(brand_name, '%')
OR '$arrBrands[7]' LIKE CONCAT(brand_name, '%')
OR '$arrBrands[8]' LIKE CONCAT(brand_name, '%')
)", $db2) or die(mysql_error());

ご覧のとおり、$arrBrands に保持されている配列の要素を手動でリストする必要があります。問題は、アレイが 500 エントリもの a8 を持つことができることです。

どうやって暴露するの?配列なので、書き続ける必要はありません。

前もって感謝します

4

4 に答える 4

0

これを試して:

$str    = "";
$apn    = ' OR ';
foreach( $arrBrands as $key => $each ){
    $str    .= "('{$each}' LIKE CONCAT(brand_name, '%')".$apn;
}
$str    = substr( $str, 0, strlen( $str )-3 );
$get_brand_filter_result = mysql_query("SELECT * FROM brand WHERE {$str}", $db2) or die(mysql_error());
于 2013-09-18T09:13:38.347 に答える
0

別のアプローチを使用することをお勧めします (mysql_query は「古い方法」です:mysql_*関数はPHP 5.5 で廃止されました) が、配列を循環させることができます (コードはテストされていません):

$q ="SELECT * FROM brand ";
reset($arrBrands);
$lOr=false;
while(list($key,$brand)=each($arrBrands)) {
    $q.=($lOr?" OR ":" WHERE ")."'$brand' LIKE CONCAT(brand_name, '%') ";
    $lOr=true;
}
$get_brand_filter_result = mysql_query($q, $db2) or die(mysql_error());
于 2013-09-18T09:14:12.133 に答える