2016-04-10 21 views
0

Ich habe eine Oracle-Tabelle mit 1 Feld des Datentyps CLOB.Update Oracle CLOB mit PHP

Ich möchte den Inhalt des CLOB durch eine lange Zeichenfolge ersetzen (über 4.000 Zeichen).

Ist OCI8 der einfachste Weg, dies mit PHP zu tun?

Regular SQL wäre einfach etwas wie folgt aus:

aktualisieren TableX Set clobFieldX = 'meine sehr lange Zeichenfolge' Wo KeyField = 'Wert';

Ich google für ein einfaches Beispiel, aber kann nicht eine finden, die den CLOB mit einer Klausel "wo etwas = etwas" aktualisiert.

http://php.net/manual/en/function.oci-new-descriptor.php hat ein Beispiel für eine Insert-Anweisung. Ich werde es ein wenig versuchen, aber es ist so einfach wie das Einfüge-Beispiel zu einem Update-Beispiel zu ändern?

Seitliche Anmerkung: ist OCI der beste Weg, um mit Oracle mit PHP zu interagieren? Gibt es eine freundlichere Bibliothek/Erweiterung?

+0

Nö, hat nicht funktioniert. Verdammt. – JasonW

Antwort

1
This worked: function updateClob($groupId,$memberList,$conn) { 
$sql = "UPDATE LP_GROUP SET MEMBER_EXPR_XML = EMPTY_CLOB() WHERE GROUP_ID = '$groupId' RETURNING MEMBER_EXPR_XML INTO :lob"; 
//echo $sql."\n"; 
$clob = OCINewDescriptor($conn, OCI_D_LOB); 
$stmt = OCIParse($conn, $sql); 
OCIBindByName($stmt, ':lob', &$clob, -1, OCI_B_CLOB); 
OCIExecute($stmt,OCI_DEFAULT); 
if($clob->save($memberList)){ 
    OCICommit($conn); 
    echo $groupId." Updated"."\n"; 
}else{ 
    echo $groupId." Problems: Couldn't upload Clob. This usually means the where condition had no match \n"; 
} 
$clob->free(); 
OCIFreeStatement($stmt); 

}