2011-11-08 4 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

내가 드루팔과 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]

관련 문제