From b3fa6684eaca58482bbdf1bcdafa5f4e3132857c Mon Sep 17 00:00:00 2001 From: moodler Date: Mon, 30 Dec 2002 03:25:48 +0000 Subject: [PATCH] Fixes to insert_record (from Petri) to explicitly use field default values if we know them from ADOdb, to avoid some problems with PostgreSQL 7.2 onwards --- lib/datalib.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/datalib.php b/lib/datalib.php index 223b53f6b4..ce2ca8c431 100644 --- a/lib/datalib.php +++ b/lib/datalib.php @@ -406,13 +406,26 @@ function insert_record($table, $dataobject, $returnid=true) { $data = (array)$dataobject; - // Pull out data matching these fields + // Pull out data from the dataobject that matches the fields in the table. + // If fields are missing or empty, then try to set the defaults explicitly + // because some databases (eg PostgreSQL) don't always set them properly foreach ($columns as $column) { - if ($column->name <> "id" && isset($data[$column->name]) ) { - $ddd[$column->name] = $data[$column->name]; + if ($column->name <> "id") { + if (isset($data[$column->name])) { + if ($data[$column->name] == "" and isset($column->has_default)) { + $ddd[$column->name] = $column->default_value; + } else { + $ddd[$column->name] = $data[$column->name]; + } + } else { + if (isset($column->has_default)) { + $ddd[$column->name] = $column->default_value; + } + } } } + // Construct SQL queries if (! $numddd = count($ddd)) { return false; -- 2.39.5