【问题标题】:How to call or show table that have column name contains bracket in php?如何在php中调用或显示列名包含括号的表?
【发布时间】:2019-08-06 06:50:57
【问题描述】:

我不能调用列包含方括号 () 的表。

如何调用表,我可以给列名取别名吗?

包含括号的表格是材料细节,列是Panjang(mm)和Lebar(mm)

我的控制器:

public function GetDataID()
{

    $id = $this->input->post('id');
    $cek = $this->list->getDetailBagJob2($id);
    if ($cek->num_rows() == 0) {
        $bagianjob = $this->list->getDetailBagJob1($id)->result();
        echo json_encode($bagianjob);
    } else {
        $bagianjob = $this->list->getDetailBagJob2($id)->result();
        echo json_encode($bagianjob);
    }
}

我的模特:

public function getDetailBagJob1($id)
{

    $this->db->from('opdetailbagianjob');
    $this->db->join('mbagianjob', 'opdetailbagianjob.ID_Bagian_Job=mbagianjob.ID_Bagian_Job');
    $this->db->join('mmaterial', 'opdetailbagianjob.ID_Gramatur=mmaterial.ID_Material');
    $this->db->join('mmaterial_type', 'opdetailbagianjob.ID_Bahan=mmaterial_type.ID_Mat_Type');
    $this->db->join('mmaterialdetail', 'opdetailbagianjob.ID_Ukuran=mmaterialdetail.ID_Mat_Detail');

    $this->db->where('No_Enquiry', $id);

    return $this->db->get();
}
public function getDetailBagJob2($id)
{

    $this->db->select('opdetailbagianjob.*,opdetailbagianjob.Keterangan as keteranganbagjob,mbagianjob.*,mmaterial.*,mmaterial_type.*,mmaterialdetail.*');
    $this->db->from('opdetailbagianjob');
    $this->db->join('mbagianjob', 'opdetailbagianjob.ID_Bagian_Job=mbagianjob.ID_Bagian_Job');
    $this->db->join('mmaterial', 'opdetailbagianjob.ID_Gramatur=mmaterial.ID_Material');
    $this->db->join('mmaterial_type', 'opdetailbagianjob.ID_Bahan=mmaterial_type.ID_Mat_Type');
    $this->db->where('No_Enquiry', $id);

    return $this->db->get();
}

我的 Ajax 在控制台中调用响应:

function ambilenquiry(id) {

        $.ajax({
            url: "<?php echo base_url(); ?>Enquiry/GetDataID",
            type: "POST",
            dataType: "json",
            data: {
                "id": id
            },
            success: function(data) {
                console.log(data);
            },
            error: function(data) {
                alert('Gagal');
            }
        });

    }

我希望输出是成功响应,但响应显示错误

jquery-3.4.1.min.js:2 POST http://10.3.1.10:81/gapcalc/Enquiry/GetDataID500(内部服务器 错误)

【问题讨论】:

  • 通常你会在你的标识符中添加反引号`column-name(hello world)`,我不知道你为什么首先要有这些
  • @Ghost 嗯,我尝试在 console.log 中显示响应,但是当我尝试在选择模型中调用 mmaterialtype 表时出现错误,我尝试不使用该表,但我需要它桌子。 anw as forbacktick 别担心,当我尝试调用 view/html 中的列时我会使用它
  • 无论如何先尝试调试 PHP 代码,转到您的网络选项卡,看看为什么它会产生错误 500。在开发时,打开错误报告
  • 哦,是的,谢谢!我错过了模型中的一个连接表 mmaterialdetail!无论如何,我们可以调用包含括号的列吗?或者我们可以为该列起别名吗?我尝试使用别名,但未读取 (mm)。对于错误我在这里上传imgur.com/a/3nuXyS6抱歉问了很多问题
  • 您可以直接调用它或使用别名调用它,就像我在第一条评论中所说的那样,在标识符上使用反引号,尤其是带有空格、破折号、括号和诸如此类的特殊字符 `my-wacky(column_name)` 像这样.

标签: php ajax database codeigniter-3


【解决方案1】:

就像我在 cmets 中多次说过的那样,在那些包含破折号、空格、括号等的列名上使用反引号作为标识符,这样您就可以进行有效的查询。

将它与-&gt;select 方法上的false 标志结合起来,以便它允许您使用原始输入并允许这些反引号。

$this->db->select('
    `mmaterial.Lebar(mm)`,
    `mmaterial.Panjang(mm)`
', false);

【讨论】:

  • 谢谢!它的 rly 有效,对不起,我认为如果我从一开始就得到它,那么撇号是反引号,并且非常感谢你,你是最棒的
  • @AnggaZain 在 mysql 中你在列名上使用` 反引号,而不是'。很高兴这有帮助
猜你喜欢
  • 2013-01-15
  • 2019-06-24
  • 2012-07-16
  • 2014-12-30
  • 2020-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多