[英]Drupal 7 Custom db_query from External Script?
我使用外部腳本通過調用適當的Drupal標頭和引導程序來使Node Insert
/ Edit
/ Delete
。 我包括了以下調用(在Drupal根目錄下的腳本中):
define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
require_once drupal_get_path('module', 'biblio') . '/includes/biblio.contributors.inc';
實際上,它對於Node Actions (node_load, node_save)
和SELECT db_query
來說運行良好,但對於DELETE Queries
完全 SELECT db_query
。
我的意思是, node_load()
node_save()
db_query("SELECT ..."
已經在工作。
但完全不適合:
db_query("DELETE FROM {biblio} WHERE nid = %d", $nid);
..甚至我用下面的方式:
$deleted = db_delete('biblio')
->condition('nid', $nid)
->execute();
不再工作。 而且,即使我不能使用DIRECT PURE PHP MYSQL查詢,例如:
$mysql_connection = mysql_connect(MYSERVER, USERNAME, PASSW);
mysql_select_db(MYDATABASE, $mysql_connection);
mysql_query("DELETE FROM biblio WHERE nid=`".$nid."`");
天哪! 怎么了?
實際上,我正在嘗試通過使用外部腳本來處理BIBLIO模塊及其項。
我現在該怎么辦?
我的另一個問題是,我們不能直接將這些查詢用於其他表中的項目,而不是node
表。 就像我現在注意到的那樣, node_delete
也僅用於node
表中的項目。 我們不能將那個node_delete
用於其他表,例如biblio
表嗎?
調用db_query()
或db_delete()
不起作用,因為Drupal無法在不知道開始使用哪個數據庫引擎的情況下加載包含數據庫API函數或類的必要包含文件。 通常從用於運行Drupal的settings.php文件中讀取該信息。 從外部腳本調用數據庫API時,需要提供該信息。
注意, db_query("DELETE FROM {biblio} WHERE nid = %d", $nid);
, db_query("DELETE FROM {biblio} WHERE nid = %d", $nid);
是Drupal 6代碼; 對於Drupal 7,應該使用db_delete()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.