php - MYSQL从数据库检索数据时如何忽略foreach循环中的重复行

标签 php mysql foreach

我有以下代码来查找文本正文中的相似关键字并显示具有相同关键字的相关链接。

但问题是,例如,如果第 2 行主体中有两个关键字,则第 2 行显示两次,但我需要第 2 行显示一次。我尝试了 SELECT DISTINCT 但它在 foreach 循环中无法正确工作。

$tags2=explode(",",$tags);
foreach ($tags2 as $i) {
    $cat_sqlii="SELECT DISTINCT id, source,title,summary,newsText,photo,mainphoto,link,Date,tags FROM newxtext WHERE (newsText LIKE '%$i%')";
    $cat_sql_queryii=mysqli_query($con,$cat_sqlii);
    $cat_sql_rowii=mysqli_fetch_assoc($cat_sql_queryii);
    do{
        echo $cat_sql_rowii['id'].'<br/>';
    }while($cat_sql_rowii=mysqli_fetch_assoc($cat_sql_queryii));
}

最佳答案

只需执行一个查询,使用 OR 测试任何标记。

$patterns = array();
foreach ($tag in explode(',', $tags)) {
    $patterns[] = "newstext like '%$tag%'";
}
$where = implode(' OR ', $patterns);
$cat_sqlii="SELECT id, source,title,summary,newsText,photo,mainphoto,link,Date,tags 
            FROM newxtext 
            WHERE ($where)";
$cat_sql_queryii=mysqli_query($con,$cat_sqlii);
while ($cat_sql_rowii = mysqli_fetch_assoc($cat_sql_queryii)) {
    echo $cat_sql_rowii['id'].'<br/>';
}

关于php - MYSQL从数据库检索数据时如何忽略foreach循环中的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45644715/

相关文章:

mysql - 如何计算cakephp中mysql数据库查询的时间总和

PHP PDO : Binding value in one foreach loop regarding insert into on duplicate key update

php - 从另一个脚本向 Ratchet WebSocket 服务器发送消息

mysql - 插入数据库未知错误

php - 完成测验后结束用户的回合

PHP 表单验证 - foreach

javascript - 带定时器的 foreach 循环

php - 使用 LDAP 和 PHP 获取 AD 错误数(ldap 函数返回不精确的错误)

php - 我需要按字母顺序对对象数据进行排序

PHP:MySQL 到表