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()を使用する。