Codeigniter,mysql,select_max ...在不同的列值时插入

时间:2018-08-03 11:48:56

标签: php mysql codeigniter

Continuation of my previous question, which was resolved... 我在模型中有以下代码:

$this->db->select_max('ELDI_Orden');
        $res = $this->db->get('elementos_diccionario')->row()->ELDI_Orden;

        $eldi_key = url_title($this->input->post('eldi_key'), 'underscore', TRUE);
        $eldi_orden = $res+1;

        $datos = array(
            'ELDI_Key' => $eldi_key,
            'ELDI_Orden' => $eldi_orden,
            'ELDI_Display' => $this->input->post('eldi_display'),
            'ELDI_SuDiccionario' => $this->input->post('eldi_sudiccionario'),
        );

        $this->db->insert('elementos_diccionario', $datos);

但是只有在ELDI_SuDiccinario具有不同的值时,我才需要这样做: Database picture

查看该图像,我需要下一个ELDI_Orden(属于ELDI_SuDiccionario 1)为5,而不是6。

ELDI_SuDIccionario    ELDI_Orden
        1                  1
        1                  2
        1                  3
        1                  4
    --NEW-- 1          --NEW-- 5
        2                  1
        2                  2
       ...                ...
        2                  5

我希望你能理解我,我的英语不好。

感谢您的时间。

3 个答案:

答案 0 :(得分:1)

您需要向您的where添加select_max条件

$this->db->select_max('ELDI_Orden')
         ->where('ELDI_SuDiccionario', $this->input->post('eldi_sudiccionario'));

答案 1 :(得分:1)

希望这对您有帮助:

只需在查询中添加Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim blocker As BlockListener Dim thread As Thread blocker = New BlockListener thread = New Thread(New ThreadStart(AddressOf blocker.listen)) thread.Start() AddHandler blocker.Blocked, AddressOf User_Blocked End Sub Private Sub User_Blocked() MessageBox.Show("Website successfully blocked!") <-- Shows 6 times! End Sub Public Class BlockListener Private port As Integer = 80 Private listener As TcpListener Private BlockUsers As Boolean = True Public Event Blocked As EventHandler Public Sub listen() listener = New TcpListener(IPAddress.Parse("127.0.0.1"), port) listener.Start() While (BlockUsers) Dim clientConnection As TcpClient = listener.AcceptTcpClient clientConnection.Close() RaiseEvent Blocked(Me, EventArgs.Empty) End While ' listener.Stop() End Sub End Class 的条件即可

ELDI_SuDiccionario = 1

更多信息:https://www.codeigniter.com/user_guide/database/query_builder.html

答案 2 :(得分:1)

就是这样

$this->db->select_max('ELDI_Orden');
    $res = $this->db->where('ELDI_SuDIccionario',$this->input->post('eldi_sudiccionario'))->get('elementos_diccionario')->row()->ELDI_Orden;

    $eldi_key = url_title($this->input->post('eldi_key'), 'underscore', TRUE);
    $eldi_orden = $res+1;

    $datos = array(
        'ELDI_Key' => $eldi_key,
        'ELDI_Orden' => $eldi_orden,
        'ELDI_Display' => $this->input->post('eldi_display'),
        'ELDI_SuDiccionario' => $this->input->post('eldi_sudiccionario'),
    );

    $this->db->insert('elementos_diccionario', $datos);