由于原因,我需要将where
条件传递给字符串而不是行的id。问题是条件只是以某种方式捕获所选值的第一个单词。例如,看看这段代码:
<select id="brand" name="brand" required>
<option value="Lorem Ipsum Dolor" selected>Lorem Ipsum Dolor</option>
</select>
然后,通过回显last_query()
,条件将显示:
... WHERE `table.column` = `Lorem` ...
而不是整个value
。
这是我的疑问:
public function find_id_ano_modelo($marca, $modelo, $ano, $comb)
{
$this->db
->select('ano_modelo.id')
->join('modelo', 'modelo.id = ano_modelo.id_modelo')
->join('marca', 'marca.id_marca = modelo.id_marca')
->where('marca.id_marca', $marca)
->where('modelo.modelo', $modelo)
->where('ano_modelo.ano', $ano)
->where('ano_modelo.combustivel', $comb)
->where('marca.tipo = 1');
$query = $this->db->get($this->table);
echo $this->db->last_query();
if ($query) {
foreach ($query->result_array() as $q) {
return $q['id'];
}
}
}
我的edit
方法在我的控制器中调用了它:
...
$marca = $this->input->post('id_marca');
$modelo = $this->input->post('id_modelo');
$ano = $this->input->post('ano');
$comb = $this->input->post('combustivel');
$data['id_ano_modelo'] = $this->Modelos_model->find_id_ano_modelo($marca, $modelo, $ano, $comb);
....
答案 0 :(得分:2)
在chat中讨论后,错误得以解决:
请求是通过ajax调用发送的,下拉列表是使用:
构建的modelo.append('<option value=' + v.modelo + '>' + v.modelo + '</option>');
问题是价值附近缺少双引号。没有它们,值的每个单词都被转换为html属性:
对于这个字符串:
QQ 1.0 ACT 12V 69cv 5p
这是生成的:
<option value="QQ" 1.0="" act="" fl="" 12v="" 69cv="" 5p="">QQ 1.0 ACT FL 12V 69cv 5p</option>
在这里添加qoutes解决了它:
modelo.append('<option value="' + v.modelo + '">' + v.modelo + '</option>');