0

ADO COMを使用してVFP 9.0でいくつかのテーブルを更新するためにphpを使用しています。

Where句を指定するまで、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: Where 句あり

$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();
}

結果:

 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 列は、上の表のキーです。

私はVFPに比較的慣れていません。これがVisual Foxproの設定なのか、それとも更新を妨げているのか、選択的に行われた場合は選択されたのかはわかりません。

4

1 に答える 1

0

使用している標準の SQL スタイルのステートメントは、VFP と簡単に互換性があります。あなたのサンプルと同じくらい単純ですが、最初に少し変更を加えてみます. エスケープ " を使用する代わりに、次のようにサンプルを一重引用符で囲みます。

UPDATE TABLE1 set COL1 = 'AA', COL2 = 'Updated value' ここで ID = 1

それが何かをするかどうか見てください。それが機能したら、安全のためにパラメーター化されたクエリに移動します...特にWebベースの場合。VFP は、他のデータベースのように「名前付きプレースホルダー」では機能しませんが、「?」を使用する序数ベースのプレースホルダーでは機能しません。「値」を適用する場所...など

UPDATE TABLE1 set col1 = ?, col2 = ? id = ?

次に、パラメーターを追加するときは、? と同じ順序に基づいて追加します。プレースホルダー

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

その後、あなたは行く準備ができているはずです。

申し訳ありませんが、PHP は私が直接よく知っているものではないため、特にサポートすることはできませんが、ガイドとして役立つはずです。

于 2010-06-07T18:52:18.607 に答える