2011-11-08 21 views
0

私は自分のDrupalデータベース内の役割の数を数え、結果で別の文を実行しようとします。しかし何らかの理由で失敗している。何が間違っていますか?単純なSQL要求が失敗しています

$numberofroles = db_query('SELECT COUNT(rid) FROM {role}'); 
$roles = 1; 

while ($roles < $numberofroles) { 
     db_query('INSERT INTO {taxonomy_access_default} (vid, rid, grant_view, grant_update, grant_delete, grant_create, grant_list) VALUES(0, '.$roles.', 1, 0, 0, 0, 1)'); 
     $roles++; 
} 
+0

私はdrupalのとPHPについて何も知らないが、中括弧は、テーブル名 '{役割}'ノーマルを囲むということでしょうか?私はそれが必要ではないと思うだろう。 – Icarus

+0

はい、Drupalの構文です... – Michiel

答えて

1

あなたは忘れていますか? - > fetchField()?

Drupal6:

$val = db_result(db_query({...}))

Drupal7:

$val = db_query({...})->fetchField();

+0

私はfetchField()を忘れました!ありがとう! – Michiel

0

db_queryは何を返しますか?あなたのSQLクエリは単一の列と単一の行を返しますが、db_queryは配列として整数または結果セットを返しますか?

print $ numberofroles(ヒント:$ numberOfRolesは読みやすく)、値が何であるかを確認してください。 array()と表示されたら、配列を処理して、必要な値を抽出する必要があります。$numberofroles[0][0]

関連する問題