// uses constant number of queries to get the descriptions, join would be complex, multiple queries would be slow
$descriptions = $this->values[$foreignKey["table"]];
if (!$descriptions) {
- $result = $connection->query("SELECT $id, $name FROM " . idf_escape($foreignKey["table"]) . " WHERE $id IN (" . implode(", ", $ids) . ")");
- while ($row = $result->fetch_row()) {
- $descriptions[$row[0]] = $row[1];
- }
+ $descriptions = get_key_vals("SELECT $id, $name FROM " . idf_escape($foreignKey["table"]) . " WHERE $id IN (" . implode(", ", $ids) . ")");
}
// use the descriptions
foreach ($rows as $n => $row) {
if (strlen($name)) {
$return = &$this->values[$foreignKey["table"]];
if (!isset($return)) {
- $result = $connection->query("SELECT $id, $name FROM " . idf_escape($foreignKey["table"]) . " ORDER BY 2 LIMIT 1001");
- $return = array();
- if ($result->num_rows < 1001) { // optionlist with more than 1000 options would be too big
- $return[""] = "";
- while ($row = $result->fetch_row()) {
- $return[$row[0]] = $row[1];
- }
+ $return = array("" => "") + get_key_vals("SELECT $id, $name FROM " . idf_escape($foreignKey["table"]) . " ORDER BY 2 LIMIT 1001");
+ if (count($return) > 1001) {
+ $return = array();
}
}
return $return;
// iconv_mime_encode requires PHP 5, imap_8bit requires IMAP extension
return "=?UTF-8?B?" . base64_encode($header) . "?="; //! split long lines
}
+
+function get_key_vals($query) {
+ global $connection;
+ $return = array();
+ $result = $connection->query($query);
+ while ($row = $result->fetch_row()) {
+ $return[$row[0]] = $row[1];
+ }
+ return $return;
+}