我有以下数组,其中包含从多选框中选择的项目。
array (size=2)
0 => string 'CABLES' (length=6)
1 => string 'PCR' (length=3)
我试图将这些值插入到表格中,并且正在尝试将这些值插入表格中。具有以下结构
`idProveedor` int(11) NOT NULL,
`idFamilia` int(11) NOT NULL
因此,对于idProveedor = 1,我需要为所有选中的项插入数组值。
idProveedor idFamilia
1 1
1 2
1 ...
事情是数组中的值(CABLES,PCR等)存储在一个名为" familia"的不同表中。其中ID号与阵列中的号码不同。
id clave description
1 PCR ...
2 CABLES ...
在我的控制器中,我获取了idProveedor和数组$ nombresFamilia的ID,我调用了函数$ relacion_proveedor
$idProveedor = $this->Proveedormodel->get_idConsecutivo();
$nombresFamilia = $this->input->post('nombresFamilia');
$relacion_proveedor = $this->Proveedormodel->add_uk_proveedor_familia($idProveedor, $nombresFamilia);
这是我在模型中的功能。首先,我从表格#34; 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);
我的模型中的函数肯定是错误的,我该怎么办呢?
答案 0 :(得分:1)
CodeIgniter的$this->db
对象会为您处理所有数据库内容。您不需要致电mysql_fetch_array()
。
function add_uk_proveedor_familia($id, $params){
foreach($params as $clave){
$valor = $this->db->query("SELECT id FROM familia WHERE clave= '$clave'");
$vl = $valor->row_array();
$familia = $vl['id'];
$this->db->query("INSERT INTO 'relacionproveedorfamilia' ('idProveedor', 'idFamilia') VALUES ('$id', '$familia')");
}
}
(参见他们的文件:https://www.codeigniter.com/user_guide/database/index.html)
我还建议您使用他们的"查询构建器" (之前称为"活动记录")类。手动将变量插入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
));
}
}