【发布时间】:2016-01-25 16:31:06
【问题描述】:
由于某些原因,我需要将字符串而不是行的 id 传递给 where 条件。问题是条件以某种方式仅捕获所选值的第一个单词。比如看这段代码:
<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);
....
【问题讨论】:
-
您是如何构建查询的?您从哪里/如何获得用于构建它的价值?
-
@AlexTartan 查询是按照文档解释的方式构建的,并且值作为 POST 从表单中检索。请看我的编辑。
-
你能
echo $marca;(或<select>的对应值)吗? -
@AlexTartan 是的。它也只呼应第一个单词。
-
尝试一个小技巧:在视图中用“_”替换空格,然后在控制器中替换它们
标签: mysql sql codeigniter where