我使用PHP来更新VFP 9.0下的一些表使用ADO COM。Visual FoxPro DBF更新使用PHP
我能够选择和更新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设置或其他什么阻止更新或选择如果选择性地完成。
因为没有WHERE子句的查询工作正常,所以它与引号没有问题。不过谢谢你。 有人建议我使用Cast作为解决方法[ 其中cast(ID为I)= 1] 并且对我来说这似乎工作正常。 – mtanish 2010-06-14 19:57:48