2014-03-04 32 views
1

而下執行如下代碼更新:同時運行在FoxPro中更新查詢得到這個錯誤

$conn = new COM("ADODB.Connection"); 

$conn->Open('Provider=VFPOLEDB.1; 
Data Source="C:\Users\TEMP.HIDEAZSERVER\Desktop\databaseetc\testdata";'); 

$query = "UPDATE sitedetl set NAME = \"AA\", CUST_CODE = \"Updated value\" "; 

$conn->Execute($query); 

$query = "SELECT * FROM sitedetl WHERE UNIQUEID = '00000000190'"; 

$rs = $conn->Execute($query) or die("Error in query: $query. " . $conn->ErrorMsg()); 

while (!$rs->EOF) { 

    echo " Got NAME: " . $rs->Fields("NAME") . " :: CUST_CODE: " . $rs->Fields 
    ("CUST_CODE"); 

    $rs->MoveNext(); 
} 

選擇查詢運行,但更新查詢沒有運行....

我正在此錯誤而更新查詢執行:

Fatal error: Uncaught exception 'com_exception' with message ' 
Source: Microsoft OLE DB Provider for Visual FoxPro 
Description: File 'ws_ri.prg' does not exist.' in D:\xampp\htdocs\websims\test_config.php:7 
Stack trace: 
#0 D:\xampp\htdocs\websims\test_config.php(7): com->Execute('UPDATE sitedetl...') 
#1 {main} thrown in D:\xampp\htdocs\websims\test_config.php on line 7 
+0

我不確定'ws_ri.prg'消息是什麼,但是在update語句中,嘗試在name ='AA',cust_code ='Updated value'處使用單引號。 VFP可能不喜歡雙引號內的雙引號。 – Jerry

+1

DBC打電話來強制執行參照完整性可能嗎? –

+0

@Jerry:使用雙引號,單引號甚至方括號,FoxPro都可以。 (這是一種奇怪的,奇怪的語言。) – DougM

回答

3

FoxPro的DBC已配置從而使sitedetl表有關係完整性觸發加在UPDATE,在這種情況下,「ws_ri.prg」

可能的方案爲準最初創建該數據庫包含一個定義ws_ri,因爲你不通過說去可執行文件,你將被留下一個錯誤。 (這就是爲什麼適當的分離關注是個好主意,孩子們!)

爲了側面解決問題,您應該能夠簡單地將ws_ri.prg文件添加到C:\ Users \ TEMP.HIDEAZSERVER \ Desktop \ databaseetc \ TESTDATA。

您可能還想嘗試連接到DBC本身,而不是文件夾。

相關問題