如何遍历查询结果并将结果与​​输入字段进行比较

时间:2018-07-24 14:45:22

标签: php mysql codeigniter

我想遍历查询的结果,然后将每个结果与输入字段进行比较,如果重复该值,则如果结果不是true,则必须返回false,我知道我可以在数据库中使用唯一索引来避免重复的值,然后捕获错误,但是在这种情况下,重复的值是可能的,但是它们不能同时处于“活动”状态,因此存在一个名为“状态”的列,其中包含两个值A或I(活动和非活动),因此“分类”值仅当一个处于活动状态而另一个处于非活动状态时才可以重复。 控制器:

$show_lang = $db_conx -> query("SHOW COLUMNS FROM words");
        while ($col = $show_lang -> fetch_assoc()) {
            $field = $col['Field'];
            $sel_lan = $db_conx -> query("SELECT * FROM words WHERE $field = '' ");
            $word_count = mysqli_num_rows($sel_lan);
            echo "the field ".$field." is empty at:";
            if ($word_count != 0) {
              while($fetch = $sel_lan -> fetch_array()){
                echo "<br>id = ".$fetch['id']; //hope you have the field id...
              }
            }
        }

型号:

function agregar()
{
    $this->load->helper('date');
    date_default_timezone_set('America/Mexico_City'); 
    $now = date('Y-m-d H:i:s');        
    $Interno = $this->input->post('intern');
    $clabe = $this->input->post('clabe2') . $this->input->post('control2'); 
    $cve_banco = $this->input->post('cve_banco');
    $Banco = $this->input->post('Banco2');
    $Observaciones = $this->input->post('Observaciones');

    $data = array(
        'Interno' => $Interno,
        'clabe' => $clabe,
        'cve_banco' => $cve_banco, 
        'Banco' => $Banco,
        'Observaciones' => $Observaciones,
        'Fecha_alta' => $now, 
    );

    if($this->consultas_M->insert($data) == true){
        //redirect('Inicio/busqueda', 'refresh');
    } else{
        echo "Hubo un problema al insertar";
    }
}

3 个答案:

答案 0 :(得分:0)

为什么要有可能重复的索引?如果出于某种原因要使用共同的“索引”来拥有不同的行,则可以创建一个名为index或诸如此类的列,然后在该索引的WHERE子句中添加。 PS:在模型中的foreach循环的if条件中使用:

if ($clabe == $row){...

代替

$i = $row
if ($clabe = $i){...

答案 1 :(得分:0)

我解决了自己的问题,我在发帖以防万一,这比我想象的要容易。

function insert($data, $clabe)
  {
       $Status = 'A';
       $clabe = $this->input->post('clabe2') . $this->input->post('control2');
      $this->db->select('Clabe');
      $this->db->where('Status =', $Status);
      $this->db->where('Clabe =', $clabe);
    $q= $this->db ->get('cuentas');
  if($q -> num_rows() > 0){
    return false;
                      }else{
                        $this-> db -> insert('cuentas', $data);
                        return true;
                      }

这是控制器:

if($this->consultas_M->insert($data, $clabe) == true){
            redirect('Inicio/busqueda', 'refresh');
          } else{
            echo "There was a problem";
            $this->load->view('errors/error');

          }

我唯一不需要做的就是选择我想要的“衣橱”,然后将其与用户编写“衣橱”的输入进行比较。然后是一个简单的if-else语句。

答案 2 :(得分:-1)

Notification buildNotification = mBuilder.build();
NotificationManager mNotifyMgr = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
mNotifyMgr.notify(001, buildNotification);

您的代码会将其添加到其他else阻止广告返回中。相反,它应该首先检查所有行以决定。