【问题标题】:SQL where condition is only receiving one word from the value of the fieldSQL where condition 只接收字段值中的一个单词
【发布时间】: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;(或&lt;select&gt;的对应值)吗?
  • @AlexTartan 是的。它也只呼应第一个单词。
  • 尝试一个小技巧:在视图中用“_”替换空格,然后在控制器中替换它们

标签: mysql sql codeigniter where


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 2019-01-05
    • 2015-09-23
    相关资源
    最近更新 更多