2015-11-16 3 views
0

Пример:PHP, MYSQL, проверка FOREACH если же значение

Mysql - TABLE_DATA

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, Жоэль, джо и joela datastatus все одинаковы и не одинаковы?

Как я могу узнать результат этого примера .. вывод должен быть ложным, потому что все состояния не совпадают, и в случае, если все состояние одинаково, как я могу это знать?

Надежда кто-то может помочь мне спасибо заранее ..

+0

Вы используете codeigniter ?? –

+0

Да, сэр ........ –

+0

Я не понял, что вы пытаетесь сделать ... – barbarity

ответ

2

Попробуйте эту оптимизированную логику:

$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; 
    } 
} 
0

Вы можете попробовать, как это,

$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 
    } 
} 
1

Измените запрос, как показано ниже.

$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') 
0

Попробуйте эту логику

Не нужно 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"; 
      } 
     }