PHP Doku:: Ersetzt einen Datensatz in einer Datenbank - function.dbase-replace-record.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzDatenbankerweiterungenAnbieterspezifische DatenbankerweiterungendBasedBase Funktionendbase_replace_record

Ein Service von Reinhard Neidl - Webprogrammierung.

dBase Funktionen

<<dbase_pack

DB++>>

dbase_replace_record

(PHP 4, PHP 5)

dbase_replace_recordErsetzt einen Datensatz in einer Datenbank

Beschreibung

bool dbase_replace_record ( int $dbase_identifier , array $record , int $record_number )

Ersetzt in der Datenbank den angegebenen Datensatz record_number mit den Daten aus record.

Parameter-Liste

dbase_identifier

Die Datenbank-Verbindungskennung, die von dbase_open() oder dbase_create() zurückgegeben wurde.

record

Ein indiziertes Datenarray. Falls die Anzahl der Elemente nicht mit der Anzahl der Datenbankfelder übereinstimmt, schlägt dbase_replace_record() fehl.

Hinweis:

Vergessen Sie nicht, den deleted-Schlüssel zu löschen, wenn Sie für diesen Parameter den Rückgabewert von dbase_get_record() verwenden.

record_number

Eine Ganzzahl, die von 1 bis zur Anzahl der Datensätze in der Datenbank (wie von dbase_numrecords() zurückgegeben) geht.

Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.

Beispiele

Beispiel #1 Aktualisieren eines Datensatzes in der Datenbank

<?php

// im lesen-schreiben-Modus öffnen
$db dbase_open('/tmp/test.dbf'2);

if (
$db) {
  
// den alten Datensatz holen
  
$datensatz dbase_get_record_with_names($db1);

  
// den Eintrag 'deleted' entfernen
  
unset($datensatz['deleted']);

  
// das Datumsfeld mit dem aktuellen Zeitstempel aktualisieren
  
$datensatz['Datum'] = date('Ymd');

  
// den Datensatz ersetzen
  
dbase_replace_record($db$datensatz1);
  
dbase_close($db);
}

?>

Siehe auch


4 BenutzerBeiträge:
- Beiträge aktualisieren...
xamkan at yahoo dot com
21.09.2010 1:43
// simply use 'dbase_get_record' instead of 'dbase_get_record_with_names', for 'dbase_replace_record', 'dbase_add_record', or 'dbase_delete_record', to work

<?php

// open in read-write mode
$db = dbase_open('/tmp/test.dbf', 2) or die("Error! Could not open dbase database file /tmp/test.dbf.");        // 0=RO, 1=WO, 2=RW

// gets the old row
$row = dbase_get_record($db, 1);

// remove the 'deleted' entry from the array
unset($row['deleted']);

// Update the date field with the current timestamp
$row['date'] = date('Ymd');

// Replace the record
dbase_replace_record($db, $row, 1);
dbase_close($db);

?>
3Famous at gmail dot com
11.02.2008 18:03
Actually you have to change the read array from key based to element (numeric) based and everything works correctly!

<?php
     $db
= dbase_open( "yourfile.dbf", 2); // 0=RO, 1=WO, 2=RW
    
if ($db) {
       
$row = dbase_get_record_with_names($db, 1);
        unset(
$row["deleted"]); // drop the field
// do whatever it is you want to the $row["elements"]
// then convert to numeric to store:
       
$rarr = array();
        foreach (
$row as $i=>$vl) $rarr[] = $vl;
       
dbase_replace_record($db, $rarr, 1);
       
dbase_close($db);
    }
?>

That code actually works!
hassan at datakillarna dot se
11.02.2006 1:30
If you get "unexpected error", try to change the assoc array, $row, to an indexed array with array_values().

Example:
<?php
$row
= array_values($row);
dbase_replace_record($db, $row, 1);
?>

The dbase_replace-function cannot handle an assoc array.

Hope this will save someone a headache! ;)
wysocki at wildworld dot net
11.02.2005 22:15
The dbase add and replace functions do NOT like to use the associative array.

<?php
//This gives "unspecified error" on replace and add:
$row = dbase_get_record_with_names($db, 1);
unset(
$row['deleted']);
dbase_replace_record($db, $row, 1);
dbase_add_record($db, $row);

//To further prove the point,
//The first add works, the second one fails:
$testrow1=array('one','2','three');
dbase_add_record($db,$testrow1);
$testrow2=array('FIELDA' => 'xxx','FIELDB' => '9','FIELDC' => 'yyyyy');
dbase_add_record($db,$testrow2);
?>



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)