Php 你能帮我做这个foreach循环吗?

Php 你能帮我做这个foreach循环吗?,php,mysql,database,search,Php,Mysql,Database,Search,我需要让搜索栏搜索多个单词 如@aynber在评论中所述,使用sprintf $cat_id=$_GET['cat_id']; $catEx = explode(' ',$cat_id); foreach($catEx as $exCat) { $looped .= 'ad_cat LIKE'.' '.'%'."$exCat".'%'.' OR '.'ad_title LIKE'.' '.'%'."$exCat".'%'.' OR '.'ad_sub_cat LIKE'.' '.'%'.

我需要让搜索栏搜索多个单词

如@aynber在评论中所述,使用sprintf

$cat_id=$_GET['cat_id'];
$catEx = explode(' ',$cat_id);
foreach($catEx as $exCat)
{
    $looped .= 'ad_cat LIKE'.' '.'%'."$exCat".'%'.' OR '.'ad_title LIKE'.' '.'%'."$exCat".'%'.' OR '.'ad_sub_cat LIKE'.' '.'%'."$exCat".'%'.' OR '.'ad_description LIKE'.' '.'%'."$exCat".'%' ;
}

在每组相似条件周围添加括号,以便在每列中检查每个值

 sprintf ( 'column like "%%s%" or column like "%%s%"', 'string', 'string');
你可以试试这个代码

$cat_id=$_GET['cat_id'];
$catEx = explode(' ',$cat_id);
foreach($catEx as $exCat) {
    $looped .= "(ad_cat         LIKE '%$exCat%' OR 
                 ad_title       LIKE '%$exCat%' OR 
                 ad_sub_cat     LIKE '%$exCat%' OR 
                 ad_description LIKE '%$exCat%') OR ";
}
$looped = trim($looped,' OR '); //just added some spaces

示例输入是什么?使用该输入的当前结果是什么?使用该输入的期望结果是什么?哇,这是一个令人困惑的字符串。我感觉你的变量没有被正确引用。使用准备好的语句将对此有所帮助。删除所有连接后,字符串将变成
$循环。='ad_cat LIKE%$exCat%或ad_title LIKE%$exCat%或ad_sub_cat LIKE%$exCat%或ad_description LIKE%$exCat%'。正如您在这里看到的,您的变量没有被引用。您可以在我粘贴时保留字符串,并在变量/占位符周围添加双引号,或者使用预先准备好的语句,这样您就再也不用担心引用问题了。@aynber但与引用问题作斗争是如此有趣!!!;)@难以置信的是,你和我对乐趣的定义完全不同哈哈,我从来没说过斯普林特。我说的是事先准备好的声明。不一样。只是回答别人的评论也有点粗鲁。。。尤其是当他们说的都不是这样的时候;)
$cat_id=$_GET['cat_id'];//cute cat
$catEx = explode(' ',$cat_id);
$looped = [];
foreach($catEx as $exCat) {
    $looped[] = "ad_cat         LIKE '%$exCat%' OR 
                 ad_title       LIKE '%$exCat%' OR 
                 ad_sub_cat     LIKE '%$exCat%' OR 
                 ad_description LIKE '%$exCat%'";
}
echo implode(" OR ",$looped);