From 1d1e0cb0b65ff44a0dabe4eaf3905896109f9dfb Mon Sep 17 00:00:00 2001 From: Dominique Fournier Date: Thu, 12 Jun 2014 12:00:52 +0000 Subject: [PATCH] dblayer : Move unique fields in each SQL engine bug dblayer : table name was alwas 'table' (missing $) adding quotes arround unique fields to support spaces git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@1438 bf3deb0d-5f1a-0410-827f-c0cc1f45334c --- dblayer.php | 65 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 48 insertions(+), 17 deletions(-) diff --git a/dblayer.php b/dblayer.php index 3a4277c..d5dd65a 100644 --- a/dblayer.php +++ b/dblayer.php @@ -454,7 +454,7 @@ class dblayer extends PDO switch ($this->db->getAttribute(PDO::ATTR_DRIVER_NAME)) { case "sqlite": - $sql = "CREATE TABLE `table` (\n"; + $sql = "CREATE TABLE `$table` (\n"; $i = 0; foreach ($fields as $field=>$params) { @@ -504,9 +504,24 @@ class dblayer extends PDO } $i ++; } + // Unique fields + if ($unique !== null) + { + foreach ($unique as $u) + { + $sql .= ",\n UNIQUE (`"; + if (is_array ($u)) + $sql .=implode ("`,`", $u); + else + $sql .= $u; + $sql .="`)"; + } + } + // TODO : Foreign keys + $sql .=")"; break; case "mysql": - $sql = "CREATE TABLE `table` (\n"; + $sql = "CREATE TABLE `$table` (\n"; $i = 0; foreach ($fields as $field=>$params) { @@ -556,9 +571,24 @@ class dblayer extends PDO } $i ++; } + // Unique fields + if ($unique !== null) + { + foreach ($unique as $u) + { + $sql .= ",\n UNIQUE (`"; + if (is_array ($u)) + $sql .=implode ("`,`", $u); + else + $sql .= $u; + $sql .="`)"; + } + } + // TODO : Foreign keys + $sql .=")"; break; case "pgsql": - $sql = "CREATE TABLE \"table\" (\n"; + $sql = "CREATE TABLE \"$table\" (\n"; $i = 0; foreach ($fields as $field=>$params) { @@ -612,25 +642,26 @@ class dblayer extends PDO } $i ++; } + // Unique fields + if ($unique !== null) + { + foreach ($unique as $u) + { + $sql .= ",\n UNIQUE (\""; + if (is_array ($u)) + $sql .=implode ("\",\"", $u); + else + $sql .= $u; + $sql .="\")"; + } + } + // TODO : Foreign keys + $sql .=")"; break; default: throw new Exception (_("PDO Engine not supported in dbLayer", 500)); } - // Unique fields - if ($unique !== null) - { - foreach ($unique as $u) - { - $sql .= ",\n UNIQUE ("; - if (is_array ($u)) - $sql .=implode (",", $u); - else - $sql .= $u; - $sql .=")"; - } - } - $sql .=")"; echo "$sql\n"; }