0

使用以下代码:

    db_update('nodesequence_nodes')
  ->fields(array(
    'order' => 1,
  ))
  ->condition('nid', 1, '=')
  ->condition('nsid', 1, '=')
  ->execute();

我收到以下错误:

PDOException: SQLSTATE[42000]: 语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'order='1' WHERE (nid = '1') AND (nsid = '1')' 附近使用正确的语法: UPDATE {nodesequence_nodes} SET order =:db_update_placeholder_0 哪里 (nid = :db_condition_placeholder_0) AND (nsid = :db_condition_placeholder_1) ; 数组( [:db_update_placeholder_0] => 1 [:db_condition_placeholder_0] => 1 [:db_condition_placeholder_1] => 1 )在 nodesequence_init() (/var/www/eventbooking2/sites/all/modules/nodesequence/nodesequence.module 的第 13 行) )。

很抱歉我不能提供更多的见解,但我希望你能。

db_update在我看来,简单的代码应该可以工作,但我不知道为什么不能。

数据库架构:

        $schema['nodesequence_nodes'] = array(
        'description' => 'Relating nodesequences to their consituent nodes.',
        'fields'     => array(
            'nsid'   => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE),
            'nid'    => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE),
            'order'  => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
        ),
        'primary key' => array('nsid', 'nid'),
    );
4

1 回答 1

1

您不能在表中使用名为“order”的列,因为这是保留字。您需要将其更改为其他内容。

更多信息在这里http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html看看表 9.2

于 2012-06-16T19:32:47.760 回答