diff --git a/adminer/create.inc.php b/adminer/create.inc.php
index 101ac2abb..22fe647c3 100644
--- a/adminer/create.inc.php
+++ b/adminer/create.inc.php
@@ -5,7 +5,7 @@
$referencable_primary = referencable_primary($TABLE);
$foreign_keys = array();
foreach ($referencable_primary as $table_name => $field) {
- $foreign_keys[idf_escape($table_name) . "." . idf_escape($field["field"])] = $table_name;
+ $foreign_keys[str_replace("`", "``", $table_name) . "`" . str_replace("`", "``", $field["field"])] = $table_name; // not idf_escape() - used in JS
}
$orig_fields = array();
@@ -44,7 +44,7 @@
$fields[] = array($field["orig"], $process_field, $after);
}
if (isset($foreign_key)) {
- $foreign[] = ($TABLE != "" ? "ADD" : " ") . " FOREIGN KEY (" . idf_escape($field["field"]) . ") REFERENCES " . idf_escape($foreign_key) . " (" . idf_escape($type_field["field"]) . ")";
+ $foreign[] = ($TABLE != "" ? "ADD" : " ") . " FOREIGN KEY (" . idf_escape($field["field"]) . ") REFERENCES " . idf_escape($foreign_keys[$field["type"]]) . " (" . idf_escape($type_field["field"]) . ")" . (in_array($field["on_delete"], $on_actions) ? " ON DELETE $field[on_delete]" : "");
}
$after = "AFTER " . idf_escape($field["field"]);
} elseif ($field["orig"] != "") {
@@ -178,12 +178,12 @@
| " size="3" onfocus="editingLengthFocus(this);"> | |