【问题标题】:Drupal 7 - db_insert returns with errorDrupal 7 - db_insert 返回错误
【发布时间】:2013-01-15 12:47:44
【问题描述】:

我在 Drupal 7 中尝试了一个简单的插入查询,但它总是返回错误。 我也尝试了 db_insertdrupal_write_recorddb_query,但每个函数都会返回各种错误。

我有一个 tabledrag_menu 表:

我有一个 $adat 数组:

Array
(
    [name] => Overview
    [weight] => 0
    [group] => left
    [checked] => 0
    [tid] => 96
    [nid] => 20
)

使用 var_dump 它看起来像这样:

array(6) { ["name"]=>   string(8) "Overview"   ["weight"]=>   int(0)   ["group"]=>   string(4) "left"   ["checked"]=>   int(0)   ["tid"]=>   int(96)   ["nid"]=>   int(20) } 

我的代码,它给出了错误:

$id = db_insert('tabledrag_menu')->fields($adat)->execute();

当我使用 db_insert 时,它会返回以下错误消息:

PDOException: SQLSTATE[42000]: 语法错误或访问冲突:1064 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 'group, checked, tid, nid) VALUES ('Overview', '0', 'left', '0', '96', '20')' 在第 1 行:INSERT INTO {tabledrag_menu} (name, weight, 组,检查,tid,nid)值(:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5);数组( [:db_insert_placeholder_0] => 概述 [:db_insert_placeholder_1] => 0 [:db_insert_placeholder_2] => 左 [:db_insert_placeholder_3] => 0 [:db_insert_placeholder_4] => 96 [:db_insert_placeholder_5] => 20)

我认为,这部分会导致错误,但我不知道如何解决它:

VALUES ('Overview', '0', 'left', '0', '96', '20')

【问题讨论】:

    标签: database drupal drupal-7


    【解决方案1】:

    Group 是 MySql 的保留字。尝试为该字段使用其他名称。

    【讨论】:

    • 仅供参考,您可以在单引号内使用'`group`'(带有反引号)。但如果可能的话,我建议更改字段名称
    【解决方案2】:

    尝试从整数列中的值中删除单引号。

    例如改变这个

    VALUES ('Overview', '0', 'left', '0', '96', '20')
    

    变成这样:

    VALUES ('Overview', 0, 'left', 0, 96, 20)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多