【发布时间】:2009-10-15 01:48:19
【问题描述】:
Drupal 6.12 版
我有一个输入格式为 PHP 的页面。
我只是想更新一个数据库表。 SQL 代码对于 db_query 来说似乎太复杂了。我无法使 db_query 工作,也不包括 php,也无法将自定义 php 代码放入“Body”中似乎也可以。关于如何使以下代码在 Drupal 中工作的任何建议?
这是我们放入正文的代码。我尝试创建一个 PHP 文件,并且只包含带有 INCLUDE 语句的 PHP 文件。
我知道 PHP 没有错误。它取自一个不使用 Drupal 的网站!
<?php
if( isset( $_GET['file'] ) )
{
$fileno = $_GET['file'];
$client = $_POST["Client"];
$DBLink = pg_connect("host=XXXX dbname=XXXX user=XXX password=XXXX" );
$sql = "update
webform_submitted_data sd set data = 'A'
where
sd.nid = '27' and
sd.cid = (select wc.cid from webform_component wc where wc.nid = sd.nid and wc.form_key = 'status') and
sd.sid = (select wd.sid from webform_submitted_data wd, webform_component wc
where wc.nid = sd.nid and wc.form_key = 'your_file_' and wd.nid = wc.nid and
wd.data = '$fileno');"
if( ! pg_query($DBLink, $sql) )
{
print( "Database Connection Failure: " . pg_last_error($DBLink));
exit;
}
else
{
print "File: $fileno is now Assigned to $client";
}
pg_close($DBLink);
}
?>
我还尝试调用 Drupal API 来向数据库发送更新,但也没有成功,请参见下面的代码。在放弃尝试上面的代码之前,我实际上是先尝试了这种方法。
我还尝试了两个版本的 db_query。您在下面看到的一个和我在 $sql 字符串中将 %s 替换为 $fileno 并调用 db_query($sql) 的一个。
<?php
if( isset( $_GET['file'] ) )
{
$fileno = $_GET['file'];
$client = $_POST["Client"];
$sql = "update
webform_submitted_data sd set data = 'A'
where
sd.nid = '27' and
sd.cid = (select wc.cid from webform_component wc where wc.nid = sd.nid and wc.form_key = 'status') and
sd.sid = (select wd.sid from webform_submitted_data wd, webform_component wc
where wc.nid = sd.nid and wc.form_key = 'your_file_' and wd.nid = wc.nid and
wd.data = '%s');"
db_query($sql, $fileno);
print "File: $fileno is now Assigned to $client";
}
?>
我还将我的数据库置于完整的日志记录模式,记录连接和所有语句,并且没有一个查询命中数据库。在第一种情况下,如果我包含 PHP,我只会得到一个白色/空白屏幕——这就像 PHP 代码正在运行,但 drupal 在运行之前解析代码。我只想让代码按原样运行。
另外,我真的对创建 drupal 模块不感兴趣。如果可以在没有大量 Drupal 定制的情况下完成这项工作,那就是我所追求的。这是一个短期的战术解决方案,而我们则致力于实现更具战略性的目标......
谢谢大家!
【问题讨论】: