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
$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 表中的多个列并创建不存在的列