जवाबों:
यह सामान्य है, जैसा कि Drupal उस प्रविष्टि को बनाता है जब यह स्थापित होता है, अनाम उपयोगकर्ता के लिए। जो user_install () (Drupal 7), या system_install () से किया जाता है , जिसमें निम्न कोड होते हैं।
// Drupal 7.
// Insert a row for the anonymous user.
db_insert('users')
->fields(array(
'uid' => 0,
'name' => '',
'mail' => '',
))
->execute();
// Drupal 6.
// Inserting uid 0 here confuses MySQL -- the next user might be created as
// uid 2 which is not what we want. So we insert the first user here, the
// anonymous user. uid is 1 here for now, but very soon it will be changed
// to 0.
db_query("INSERT INTO {users} (name, mail) VALUES('%s', '%s')", '', '');
// …
// This sets the above two users uid 0 (anonymous). We avoid an explicit 0
// otherwise MySQL might insert the next auto_increment value.
db_query("UPDATE {users} SET uid = uid - uid WHERE name = '%s'", '');
"नोड" तालिका में "उपयोगकर्ता" तालिका में शामिल डेटा के साथ शामिल होने पर उस प्रविष्टि का उपयोग आम तौर पर किया जाता है।
ऐसा नहीं होने से ड्रुपल कुछ परिस्थितियों में सही तरीके से काम नहीं कर पाएगा।
यदि आपको डेटाबेस में अनाम उपयोगकर्ता डेटा को पुनर्स्थापित करने की आवश्यकता है, तो मैं Drupal से निष्पादित कोड के समान कोड निष्पादित करूंगा। विशेष रूप से, Drupal 6 के लिए, मैं निम्नलिखित कोड निष्पादित करूंगा।
यदि अनाम उपयोगकर्ताओं का डेटा पहले से ही डेटाबेस में मौजूद है, लेकिन उपयोगकर्ता आईडी 0 नहीं है:
db_query("UPDATE {users} SET uid = uid - uid WHERE name = '%s'", '');
यदि अनाम उपयोगकर्ता का डेटा मौजूद नहीं है, तो भी गलत उपयोगकर्ता आईडी के साथ:
db_query("INSERT INTO {users} (name, mail) VALUES('%s', '%s')", '', '');
db_query("UPDATE {users} SET uid = uid - uid WHERE name = '%s'", '');
यदि आप स्वचालित रूप से अनाम उपयोगकर्ता डेटा को पुनर्स्थापित करना चाहते हैं, तो आप hook_cron()
कस्टम मॉड्यूल में लागू कर सकते हैं , और निम्नलिखित के समान कोड निष्पादित कर सकते हैं । (कोड Drupal 6. के लिए है)
function mymodule_cron() {
$uid = db_result(db_query("SELECT uid FROM {users} WHERE name = '%s'", ''));
if ($uid === FALSE) {
// The data has not been found in the database; re-create the row.
db_query("INSERT INTO {users} (name, mail) VALUES('%s', '%s')", '', '');
}
db_query("UPDATE {users} SET uid = uid - uid WHERE name = '%s'", '');
}
यदि आप मॉड्यूल को कम भार देते हैं, तो इसके कार्यान्वयन hook_cron()
को अन्य कार्यान्वयन से पहले निष्पादित किया जाएगा, और इससे वे बचेंगे क्योंकि डेटाबेस में अनुपस्थित पंक्ति।
INSERT INTO users (uid, name, mail) VALUES(0, '', '')