0

我正在使用外部脚本通过调用适当的 Drupal 标头和引导程序来制作Node // Insert。我包括了如下调用(在 Drupal 根目录下的脚本中):EditDelete

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

我的意思是,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表格吗?

4

1 回答 1

0

调用db_query()ordb_delete()不起作用,因为 Drupal 在不知道开始使用哪个数据库引擎的情况下无法加载包含数据库 API 函数或类的必要包含文件。该信息通常从用于运行 Drupal的settings.php文件中读取。从外部脚本调用数据库 API 时,您需要提供该信息。

请注意,这db_query("DELETE FROM {biblio} WHERE nid = %d", $nid);是 Drupal 6 代码;对于 Drupal 7,您应该使用db_delete().

于 2013-06-04T14:35:59.327 回答