Drupal版本6.12在Drupal中調用自定義的PHP
我有一個輸入格式爲PHP的頁面。
我只是想更新數據庫表。對於db_query,SQL代碼似乎過於複雜。我不能讓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字符串中的$ fileno替換%s,並調用db_query($ sql)。
我也把我的數據庫處於完全日誌記錄模式,記錄連接和所有語句,並且兩個查詢都不會觸及數據庫。在第一種情況下,如果我包含PHP,我只會得到一個白色/空白屏幕 - 這就像PHP代碼正在運行,但drupal在運行代碼之前解析代碼。我只想讓代碼運行AS-IS。
而且,我真的沒有興趣創建Drupal模塊。如果可以在沒有很多Drupal自定義的情況下完成這項工作,那就是我所追求的。這是一個短期的戰術性修復,而我們在更具戰略性的目標而努力......
謝謝大家!
topologicc是對的;對於db_query而言,SQL不會太複雜。在代碼中添加一些drupal_set_message()調用來識別實際問題,解決方案可能很簡單。 – 2009-10-15 04:30:28