- Code: Select all
DB Error: ERROR: invalid input syntax for integer: ""
Stack Trace:
File: ocs-2.0.0-1/classes/rt/ocs/RTDAO.inc.php line 332
Function: DAO->update("INSERT INTO rt_contexts (version_id, title, abbrev, descripti...", Array(9))
File: ocs-2.0.0-1/classes/rt/ocs/RTDAO.inc.php line 139
Function: RTDAO->insertContext(Object(RTContext))
File: ocs-2.0.0-1/classes/rt/ocs/ConferenceRTAdmin.inc.php line 56
Function: RTDAO->insertVersion("2", Object(RTVersion))
File: ocs-2.0.0-1/classes/admin/form/ConferenceSiteSettingsForm.inc.php line 153
Function: ConferenceRTAdmin->restoreVersions(False)
File: ocs-2.0.0-1/pages/admin/AdminConferenceHandler.inc.php line 70
Function: ConferenceSiteSettingsForm->execute()
File: ocs-2.0.0-1/pages/admin/AdminHandler.inc.php line 90
Function: AdminConferenceHandler::updateConference()
File: (unknown) line (unknown)
Function: AdminHandler::updateConference(Array(0))
File: ocs-2.0.0-1/index.php line 46
Function: call_user_func(Array(2), Array(0))
File: ocs-2.0.0-1/index.php line 57
Function: handleRequest()
The environment was:
- OCS 2.0.0
- PHP 5.2.0
- PostgreSQL (libpq) Version 8.1.9
The problem is that the ADODB PostgreSQL driver does not accept PHP booleans as parameters in an SQL query, i.e. the following will fail:
- Code: Select all
DAO->update('SELECT * FROM t WHERE attr=?', Array(false));
The following patch fixes the error:
- Code: Select all
--- ocs-2.0.0-1/lib/adodb/drivers/adodb-postgres7.inc.php.datatype 2006-12-17 11:55:28.000000000 -0800
+++ ocs-2.0.0-1/lib/adodb/drivers/adodb-postgres7.inc.php 2007-10-02 02:10:43.059418000 -0700
@@ -108,10 +108,15 @@
if ($last < $i) $sql .= $v;
else $sql .= $v.' $'.$i;
$i++;
}
+ foreach($inputarr as $k=>$v) {
+ if (is_bool($v)) {
+ $inputarr[$k] = $v ? 1 : 0;
+ }
+ }
$rez = pg_query_params($this->_connectionID,$sql, $inputarr);
} else {
$rez = pg_query($this->_connectionID,$sql);
}
// check if no data returned, then no need to create real recordset
