我正在使用外部脚本通过调用正确的Drupal标头和引导来创建节点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
表吗?
答案 0 :(得分:0)
调用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()
。