PHP, MYSQL, FOREACH 检查是不是相同的值

Posted

技术标签:

【中文标题】PHP, MYSQL, FOREACH 检查是不是相同的值【英文标题】:PHP, MYSQL, FOREACH check if same valuePHP, MYSQL, FOREACH 检查是否相同的值 【发布时间】:2016-02-17 08:07:10 【问题描述】:

示例:

mysql - 表数据

  dataid   dataname    datastatus
    1        joel          1
    1        joelle        2
    1        joe           3
    1        joela         4
    1        joella        5

php

 $names = array('joel','joelle','joe','joela');
 foreach($names as $name)
 
    $qcheck = $this->db->query("SELECT * FROM table_data WHERE dataname=".$name."");
     //Do checking here
 

我如何知道 joel、joelle、joe 和 joela 数据状态是否都相同和不同?

我怎么知道那个例子的输出。输出应该是假的,因为所有的状态都不一样,如果所有的状态都一样,我怎么知道呢?

希望有人能帮助我提前谢谢..

【问题讨论】:

你在使用codeigniter吗?? 我不明白你想做什么...... 为什么不一起获取呢? dataname IN ('joel','joelle','joe','joela') GROUP BY (datastatus)。如果您得到单行,则相同,否则不同。 @barbarity 我正在尝试使用 foreach 检测所有数据状态是否都相同 只能SELECT COUNT(datastatus)GROUP BY将选中的条目按状态分组,然后统计不同的状态 【参考方案1】:

试试这个逻辑

不需要implode array。只需像这样在where_in 中传递数组-

        $names = array('joel','joelle','joe','joela');
        $this->db->select("COUNT(DISTINCT datastatus) AS dataCount");
        $this->db->from("table_data");
        $this->db->where_in('dataname',$names);
        $q=$this->db->get();

        if($q->num_rows() >  0)
            $result=$q->row();

            if ($result->dataCount == 1) 
                echo "true";
            
        

【讨论】:

【参考方案2】:

如下所示修改您的查询。

$namesStr = "'" . implode("','", $names) . "'";
$qcheck = $this->db->query("SELECT COUNT(DISTINCT datastatus) AS dataCount FROM table_data WHERE dataname IN ($namesStr)");

您的查询看起来像...

SELECT COUNT(DISTINCT datastatus) AS dataCount FROM table_data WHERE dataname IN ('joel','joelle','joe','joela')

【讨论】:

【参考方案3】:

试试这个优化的逻辑:

$namesStr = implode(',', $names);
$qcheck = $this->db->query("SELECT COUNT(DISTINCT datastatus) AS dataCount FROM table_data WHERE dataname IN($namesStr)");
$allSame = FALSE;
if ($qcheck->num_rows() >  0) 
    if ($qcheck->row()->dataCount == 1) 
        $allSame = TRUE;
    

【讨论】:

【参考方案4】:

你可以这样试试,

$names = array('joel','joelle','joe','joela');
$qcheck = $this->db->query("SELECT datastatus FROM table_data WHERE dataname=".$name."")->result_array;
foreach($names as $name)

    if(in_array($name,$qcheck))
        //name exists
     else 
        //name doesnot exists
    

【讨论】:

以上是关于PHP, MYSQL, FOREACH 检查是不是相同的值的主要内容,如果未能解决你的问题,请参考以下文章

PHP PDO 检查 mySQL 表中的多个列并创建不存在的列

如何检查php中是不是已经存在mysql数据库? [复制]

检查PHP数组是不是不为空的最简单方法[关闭]

PHP:每 10 秒检查一次 mysql 数据库是不是有任何新行

检查mysql表php中是不是存在任何记录

php Foreach:检查它是否是最后一项