【问题标题】:Drupal 7 Custom db_query from External Script?来自外部脚本的 Drupal 7 自定义 db_query?
【发布时间】:2012-09-11 06:40:53
【问题描述】:

我正在使用外部脚本通过调用适当的 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完全没有

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

【问题讨论】:

    标签: php drupal drupal-nodes


    【解决方案1】:

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

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

    【讨论】:

    • D7 我肯定使用了db_delete(),正如我在上面的问题中已经提到的那样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多