メインコンテンツに移動

メインナビゲーション

  • ホーム
  • サイトマップ
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • Drupalのデータ更新ファンクション(drupal_write_record)がbackticksが使用してないためSQL文エラー:Syntax error or access violation: 1064

Drupalのデータ更新ファンクション(drupal_write_record)がbackticksが使用してないためSQL文エラー:Syntax error or access violation: 1064

drupal
drupal
mysql

データ更新ファンクション(drupal_write_record())の利用時にエラー: Syntax error or access violation: 1064

  • データの更新ファンクション:drupal_write_recode() を使用してデータ挿入を行います
    // テーブルの定義
    テーブル名: custom_table
    フィールド名: id, title, desc
    主キー:id (auto-increment)
    
    // drupal_write_record() の使用
    $data=array(
        'title' => 'title-aaaaaa',
        'desc' => 'desc-aaaaaa',
    );
    drupal_write_recode( 'custom_table', $data ) ;
    • これを実行するとエラーが発生
      PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; 
      check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc) VALUES ('title-aaaaaa', 'desc-aaaaaa')' at line 1:
       INSERT INTO {custom_table} (title, desc) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1); Array ( [:db_insert_placeholder_0] => title-aaaaaa [:db_insert_placeholder_1] => desc-aaaaaa ) 
      drupal_write_record() (C:\develop\sources\php\2drills-d7\includes\common.inc ファイル 7383行).
      

      drupal_write_record()実行時にエラーの発生

原因:テーブル(custom_table)のフィールド(desc)がMySQLの予約語のためエラーが発生

  • データ挿入するテーブルにあるフィールド(”desc”)にMySQLの予約語なので、データ更新時にエラーが発生しました
  • ネットで調べてみたらこのファンクション(drupal_write_record)がテーブル、フィールドを引用する時にbackticks(`)が使用していないからでした
    • 修正バッチ(https://www.drupal.org/node/266610)が出ていますが、あくまでバッチなので、あまり入れたくはありません(次回のシステムアップデート時に面倒な世話)

修正:MySQLの予約語と同じフィールドにbackticks(`)を追加します

  • 予約語が含まれている場合、drupal_write_recordの利用はできません
  • db_insertファンクションでデータ挿入します(予約語のフィールドにbackticksを追加します( desc => `desc`))
        db_insert('custom_table')
            ->fields(array('category'=>$category, '`desc`'=>$desc))
            ->execute();
  • フィールド名にbackticks(`)を追加したら、SQL文が正常に作動しました
ホーム

古松

検索

Article Category

  • apache(7)
  • css(19)
  • drupal(295)
  • Electron(4)
  • html(34)
  • javascript(27)
  • laravel(4)
  • linux(5)
  • macOS(2)
  • mysql(13)
  • php(19)
  • python(4)
  • SEO(12)
  • video(72)
  • Visual Studio Code(4)
  • windows(13)
  • wordpress(32)