Drupal 7でformを使用する (Drupal 6からの相違点)

Drupal7の環境でDrupal6で作ったフォームを使用すると、うまく行かない点がいくつか出てくる。


1. db_result()が使えない
関数そのものが無くなっているので、db_result()を使用しているところはすべて書き換え

2. クエリのプレースホルダーの書き方が違う

db_query( "SELECT * FROM {users} WHERE name = :name", array(':name' => $form_values['username']) );

のように、コロンを使う。PDOのスタイルに合わせてあるらしい

3. Insertの方法が違う

$vid = db_insert('<テーブル名>')->fields( array( 
    '<フィールド名>' => <値>,
  ))->execute();

のように行う。従って、

$vid = db_insert('my_new_table')->fields( array( 
    'uid' => $uid,
    'extra_field' => $extra_value,
    'additional_field' => $additional_field,
  ))->execute();

のように行う。

ただし自前のモジュールでusersテーブルにuserを追加するには、

    $edit = array();
	$edit['name']   = $username;
	$edit['mail']   = $email;
	$edit['pass']   = $password;
	$edit['language'] = "ja";
	$edit['status'] = 1;
    
	$account = user_save(null, $edit);

のようにuser_save()を使用する。