【问题标题】:SQLSTATE[42S22]: Column not foundSQLSTATE [42S22]:未找到列
【发布时间】:2015-07-23 11:16:51
【问题描述】:

我想更新一条记录:

<?php

use Phalcon\Mvc\Model;
use Phalcon\Mvc\Model\Query;

class Client extends Model {
    function modifierClient($tab) {

        $setColumns = "";
        $separateur = "";

        foreach ($tab as $k => $v){
          if ($k == 'clt_id')
            continue;
          $setColumns .= $separateur . 'c.' . $k . " = '" . $v . "'";
          $separateur = ",";
        }

        $sSQL = "UPDATE client c SET $setColumns WHERE c.clt_id = '".$tab['clt_id']."'";

        $query = new Query($sSQL, $this->getDI());
        $ret = $query->execute();

    }
}

$tab 数组有这些索引:

Array
(
    [clt_id] => 7
    [clt_cin_pass] => aaaaa
    [clt_nom] => aaaaaaaaa
    [clt_prenom] => aaaaaaaaaa
    [clt_tel] => aaaaaaaa
    [clt_adresse] => aaaaaaaa
    [clt_comment] => aaaaaaaaaayy
)

在运行时出现此错误:Exception: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'client.clt_id' in 'field list'

那么有什么问题呢?

更新

这是来自 phpMyAdmin 的表结构:

【问题讨论】:

  • 您的表中没有 clt_id 列。
  • 有!我使用 phpMyAdmin 并且该列在那里!
  • 为你的表发布表结构client
  • 如果您真的要更新 client.clt_id 我假设它是主键,请尝试将该列从 $setColumns 数组中删除

标签: php mysql phalcon


【解决方案1】:

试试这个方法

$sSQL = "UPDATE client c SET ".$setColumns." WHERE clt_id = '".$tab['clt_id']."'";

【讨论】:

  • 和发布的查询有什么区别?
  • @Rahul $setcolumns 变量的差异
  • 它给出了同样的问题!
  • UPDATE client SET clt_cin_pass = 'aaaaa',clt_nom = 'aaaaaaaaa',clt_prenom = 'aaaaaaaaaa',clt_tel = 'aaaaaaaa',clt_adresse = 'aaaaaaaa',clt_comment = 'aaaaaaaaaa' WHERE clt_id = '7'
  • 检查数据库连接和表设计定义。这里没问题……
【解决方案2】:

我找到了解决方案:我在SET 子句和WHERE 中为每一列添加了表名!

【讨论】:

    猜你喜欢
    • 2019-11-24
    • 2016-04-09
    • 1970-01-01
    • 2019-01-13
    • 2012-08-18
    • 1970-01-01
    • 2018-02-21
    相关资源
    最近更新 更多