簡體   English   中英

從外部腳本Drupal 7自定義db_query?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM