2010-06-04 9 views
0

PHP를 사용하여 VFP 9.0에서 ADO COM을 사용하는 일부 테이블을 업데이트하고 있습니다.PHP를 사용하여 Visual foxpro DBF 업데이트

여기서 절을 지정할 때까지 DBF를 선택하고 업데이트 할 수 있습니다.
쿼리에 where 절을 추가하면 간단히 0 개의 행이 반환되거나 업데이트됩니다.

$conn = new COM("ADODB.Connection"); 
$conn->Open('Provider=VFPOLEDB.1;Data Source="C:\\testDB.dbc";'); 

$query = "UPDATE TABLE1 set COL1 = \"AA\", COL2 = \"Updated value\" "; 
$conn->Execute($query); 

$query = "SELECT * FROM TABLE1 "; 
$rs = $conn->Execute($query) or die("Error in query: $query. " . $conn->ErrorMsg()); 
while (!$rs->EOF) { 
    echo " Got COL1: " . $rs->Fields("COL1") . " :: COL2: " . $rs->Fields("COL2") . " id: " . $rs->Fields("ID") . "\n"; 
    $rs->MoveNext(); 
} 

결과 :

Got COL1: AA :: COL2: Updated value     id: 0 
Got COL1: AA :: COL2: Updated value     id: 1 
Got COL1: AA :: COL2: Updated value     id: 2 

코드 2 :

Got COL1: AA :: COL2: Updated value     id: 0 
Got COL1: AA :: COL2: Updated value     id: 1 
Got COL1: AA :: COL2: Updated value     id: 2 

ID 열에는 상기 테이블의 열쇠 : 절

$query = "UPDATE TABLE1 set COL1 = \"BB\", COL2 = \"NEW2\" WHERE ID = 1"; 
$conn->Execute($query); 
$query = "SELECT * FROM TABLE1 "; 
$rs = $conn->Execute($query) or die("Error in query: $query. " . $conn->ErrorMsg()); 
while (!$rs->EOF) { 
    echo " Got COL1: " . $rs->Fields("COL1") . " :: COL2: " . $rs->Fields("COL2") . " id: " . $rs->Fields("ID") . "\n"; 
    $rs->MoveNext(); 
} 

결과가 어디에 부착.

저는 VFP에 비교적 익숙하지 않습니다. 이 Visual Foxpro 설정 또는 업데이트를 방지하거나 선택 적으로 수행 할 경우 선택해야하는 항목인지 확실하지 않습니다.

답변

0

사용중인 표준 SQL 스타일 명령문은 VFP와 쉽게 호환됩니다. 샘플이 간단하기 때문에 먼저 약간의 변경을 시도합니다. 대신 "탈출을 사용하는, 당신의 샘플 TABLE1이 COL1 = 'AA'그 아무것도 않는 경우 ID = 1

참조, COL2는 = '업데이트 값을'설정과 같은

UPDATE 주위에 작은 따옴표를 사용합니다. 한번 웹 기반 일 때 특히 안전을 위해 매개 변수화 된 쿼리로 이동합니다. VFP는 다른 데이터베이스 기반 데이터베이스와 같은 "명명 된 위치 소유자"와 작동하지 않지만 서수 기반의 위치 소유자는 '?' 어디 "값"이 적용되어야 ...

UPDATE TABLE1은 COL1를 =?, COL2 =? 설정 등 여기서 식이어서?

, 매개 변수를 추가 할 때와 동일한 순서에 따라 추가 ? 위치 표시기

다음
YourAdo.Parameters.Add("ForColumn1", variableForColumn1); 
YourAdo.Parameters.Add("ForColumn2", variableForColumn2); 
YourAdo.Parameters.Add("IDKeyColumn", variableForID); 

, 하나는 내가 직접 알고 있어요하지 이잖아로

미안 PHP 구체적으로 도울 수 없어요. 갈 수 있어야하지만에 여러분을 안내 할 수 있도록해야한다 그것.

+0

WHERE 절이없는 쿼리가 잘 작동하므로 따옴표와 같은 문제가 없습니다. 그러나 어쨌든 고마워요. 누군가가 캐스팅을 해결 방법으로 사용하도록 제안했습니다. [ 캐스팅 (ID는 I) = 1] 으로 나에게 제대로 작동하는 것 같습니다. – mtanish

관련 문제