SQL where condition is only received one word from the value of the field 的条件
SQL where condition is only receiving one word from the value of the field
由于某些原因,我需要向 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);
....
在chat讨论后,错误解决:
请求是通过 ajax 调用发送的,下拉列表是使用以下内容构建的:
modelo.append('<option value=' + v.modelo + '>' + v.modelo + '</option>');
问题是值周围缺少 double-quotes。没有它们,值的每个单词都被转换为 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>
在这里添加引号解决了问题:
modelo.append('<option value="' + v.modelo + '">' + v.modelo + '</option>');
由于某些原因,我需要向 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);
....
在chat讨论后,错误解决:
请求是通过 ajax 调用发送的,下拉列表是使用以下内容构建的:
modelo.append('<option value=' + v.modelo + '>' + v.modelo + '</option>');
问题是值周围缺少 double-quotes。没有它们,值的每个单词都被转换为 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>
在这里添加引号解决了问题:
modelo.append('<option value="' + v.modelo + '">' + v.modelo + '</option>');