Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用codeigniter将与ID关联的数组的每个元素插入到数据库表中_Php_Mysql_Codeigniter - Fatal编程技术网

Php 使用codeigniter将与ID关联的数组的每个元素插入到数据库表中

Php 使用codeigniter将与ID关联的数组的每个元素插入到数据库表中,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有以下数组,其中包含从多个选择框中选择的项目 array (size=2) 0 => string 'CABLES' (length=6) 1 => string 'PCR' (length=3) 我试图用以下结构将这些值插入到RelacionProvedOrfamilia表中 `idProveedor` int(11) NOT NULL, `idFamilia` int(11) NOT NULL 因此,对于IdProvider=1,我需要插入所有选定项的数组值

我有以下数组,其中包含从多个选择框中选择的项目

array (size=2)
    0 => string 'CABLES' (length=6)
    1 => string 'PCR' (length=3)
我试图用以下结构将这些值插入到RelacionProvedOrfamilia表中

`idProveedor` int(11) NOT NULL,
`idFamilia` int(11) NOT NULL
因此,对于IdProvider=1,我需要插入所有选定项的数组值

idProveedor         idFamilia
1                   1
1                   2
1                   ...
问题是来自阵列电缆、PCR等的值存储在另一个名为familia的表中,其中的ID号与阵列中的编号不同

id         clave        description
1          PCR          ...
2          CABLES       ...
在我的控制器中,我获取IDProvider的ID和数组$nombresFamilia,并调用函数$relacion\u proveder

$idProveedor = $this->Proveedormodel->get_idConsecutivo();
$nombresFamilia = $this->input->post('nombresFamilia');
$relacion_proveedor = $this->Proveedormodel->add_uk_proveedor_familia($idProveedor, $nombresFamilia);
这是我的模型中的函数。首先,我使用数组中的字符串从表familia获取id值,然后将该值插入表relacionproveedorfamilia

function add_uk_proveedor_familia($id, $params){
    foreach($params as $clave){
        $valor = $this->db->query("SELECT id FROM familia WHERE clave= '$clave'");
        $vl = mysql_fetch_array($valor);
        $familia = $vl['id'];
        $this->db->query("INSERT INTO 'relacionproveedorfamilia' ('idProveedor', 'idFamilia') VALUES ('$id', '$familia')");
    }

}
当我尝试提交信息时,会收到警告消息:

Message: mysql_fetch_array() expects parameter 1 to be resource, object given
Filename: models/Proveedormodel.php
Line: $vl = mysql_fetch_array($valor);
我的模型中的函数肯定是错误的,我如何修复它?

CodeIgniter的$this->db对象为您处理所有数据库内容。您不需要调用mysql\u fetch\u数组

见其文件:

我还建议您使用以前称为活动记录类的查询生成器。手动将变量插入SQL查询只是自找麻烦

function add_uk_proveedor_familia($id, $params){
    foreach($params as $clave){
        $this->db->select('id')->from('familia')->where('clave', $clave);
        $valor = $this->db->get();

        $vl = $valor->row_array();
        $familia = $vl['id'];

        $this->db->insert('relacionproveedorfamilia', array(
            'idProveedor' => $id,
            'idFamilia' => $familia
        ));
    }    
}

为什么要使用mysql_fetch_数组?我看到了一个类似的问题,我应该删除它吗?我应该用什么来代替呢?看看这个功能,就像一个符咒,我会记住它,以备将来查询。谢谢
function add_uk_proveedor_familia($id, $params){
    foreach($params as $clave){
        $this->db->select('id')->from('familia')->where('clave', $clave);
        $valor = $this->db->get();

        $vl = $valor->row_array();
        $familia = $vl['id'];

        $this->db->insert('relacionproveedorfamilia', array(
            'idProveedor' => $id,
            'idFamilia' => $familia
        ));
    }    
}