未找到列:1054尝试更新数据库

时间:2015-10-14 12:01:45

标签: php mysql cakephp cakephp-2.0

我正在使用CakePHP 2.6中的Console Shell脚本,该脚本在从Feed中检索元素时更新指定表中的数据。

不幸的是,我从更新查询中收到错误:

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'GBP' in 'field list'

这是更新查询:

$this->VendorCurrency->updateAll(
    $data, 
    array(
        'VendorCurrency.vendor_id =' => $vendorid,                          
        'VendorCurrency.curr_to =' => $update['currency_code'], 
        'VendorCurrency.curr_from =' => self::BASE_CURRENCY
    )
 );

并且:

$vendorid = 88;

$datas = Array
(
    [VendorCurrency.curr_from] => GBP
    [VendorCurrency.curr_to] => CAD
    [VendorCurrency.sell_rate] => 1.957
    [VendorCurrency.buy_rate] => 2.028
)

$update['currency_code'] = 'CAD';

self::BASE_CURRENCY = 'GBP';

我对CakePHP相当新,所以如果这是一个愚蠢的问题,请耐心等待,我做错了吗?

谢谢,

2 个答案:

答案 0 :(得分:1)

来自the official documentation

  

$ fields数组接受SQL表达式。应使用DboSource :: value()手动引用文字值。例如,如果您的某个模型方法正在调用updateAll(),那么您将执行以下操作:

示例,以及文档中显示如何转义字段的示例:

$db = $this->getDataSource();
$value = $db->value($value, 'string');
$this->updateAll(
    array('Baker.something' => $value),
    array('Baker.active' => true)
);

您的条件数组中也不需要=

答案 1 :(得分:0)

我没有在CakePHP中工作,但看起来你需要将数组值包装在单引号中以使其工作。

$datas = Array ( [VendorCurrency.curr_from] => 'GBP' [VendorCurrency.curr_to] => 'CAD' [VendorCurrency.sell_rate] => 1.957 [VendorCurrency.buy_rate] => 2.028 )