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 WHERE (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 に答える