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
));
}
}