【问题标题】:updating three table with one execution一次执行更新三个表
【发布时间】:2012-11-13 06:47:36
【问题描述】:

我尝试通过一键执行更新三个表,但为什么只是 t_user 发生了变化? t_publisher 和 t_label 没有改变并且没有错误警告..

function update($id_user=null){

        if (($this->input->post('submit') == 'Update')){
            $user=$this->input->post('username');
            $pass=$this->input->post('userpassword');
            $ussta=$this->input->post('userstatus');
            $usty=$this->input->post('usertype');
            $id_label = $this->db->query("select ID_LABEL from t_label where LABEL = '$name->USER_NAME'")->row();
            $id_publisher = $this->db->query("select ID_PUBLISHER from t_publisher where PUBLISHER = '$name->USER_NAME'")->row();

        $data = array(
            'USER_NAME' => $user,
            'USER_PASS' => $pass,
            'USER_STATUS' => $ussta,
            'USER_TYPE' => $usty
            );

        $data2 = array(
            'LABEL' => $user,
            );

        $data3 = array(
            'PUBLISHER' => $user,
            );

        $this->db->where('USER_ID', $this->input->post('id'));
        $this->db->update('t_user', $data);
        $this->db->where('ID_LABEL', $this->input->post('$id_label'));
        $this->db->update('t_label', $data2);
        $this->db->where('ID_PUBLISHER', $this->input->post('$id_publisher'));
        $this->db->update('t_publisher', $data3);
        redirect("registrasi/reg");
        }
        $var['data'] = $this->db->query("select * from t_user where USER_ID= '$id_user'")->row_array();  
        $this->load->view('update', $var);
        }

请帮忙:)

【问题讨论】:

  • 第一个查询中的 ID_LABEL 来自哪里?
  • 为什么不使用 echo $this->db->last_query() 一步一步检查它;
  • t_label 上的 id_label.. 我朋友昨天做了..
  • 确保您的选择查询正在运行 echo $this->db->last_query()

标签: sql codeigniter sql-update


【解决方案1】:

试试

function update( $id_user = NULL ){
    if ( ( $this->input->post( 'submit' ) === 'Update' ) ) {
        $user = $this->input->post( 'username' );
        $pass = $this->input->post( 'userpassword' );
        $ussta = $this->input->post( 'userstatus' );
        $usty = $this->input->post( 'usertype' );

        $sql = "SELECT ID_LABEL FROM t_label WHERE LABEL = ?";
        $id_label = $this->db->query( $sql, array( $name->USER_NAME ) )->row();

        $sql = "SELECT ID_PUBLISHER FROM t_publisher WHERE PUBLISHER = ?";
        $id_publisher = $this->db->query( $sql, array( $name->USER_NAME ) )->row();

        $data = array(
            'USER_NAME' => $user,
            'USER_PASS' => $pass,
            'USER_STATUS' => $ussta,
            'USER_TYPE' => $usty
            );

        $data2 = array(
            'LABEL' => $user,
            );

        $data3 = array(
            'PUBLISHER' => $user,
            );

        $this->db->where('USER_ID', $this->input->post('id'));
        $this->db->update('t_user', $data);

        $this->db->where('ID_LABEL', $id_label);
        $this->db->update('t_label', $data2);

        $this->db->where('ID_PUBLISHER', $id_publisher);
        $this->db->update('t_publisher', $data3);

        redirect("registrasi/reg");
    }

    $var['data'] = $this->db->query( "SELECT * FROM t_user WHERE USER_ID= '$id_user'")->row_array();
    $this->load->view('update', $var);
}

我有点困惑。是模型文件吗?如果是这样,为什么会有redirect 命令?还有为什么会有$this->load->view()?再一次,$name 是从哪里来的?您将$id_user 指定为默认参数,您在此文件中的什么位置使用它?

【讨论】:

  • 亲爱的 AMYunus,这不是模型。我会把它放在控制器中。因为它必须回到当前页面。因为查看页面和编码(控制器)页面不同,所以我必须加载查看页面。 $name 用于拍摄 USER_NAME。 $id_user 用于更新 t_user,如果我没有把它放在那里,t_user 不会改变。
  • 哦,所以你在控制器中编码数据库的东西。好的。无论如何,您是否尝试过上面的代码?还是您找到了自己的答案?
猜你喜欢
  • 2016-01-17
  • 1970-01-01
  • 2018-06-19
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多